rails_best_practices 1.9.1 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. data/.rvmrc +1 -1
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +10 -2
  4. data/README.md +33 -27
  5. data/lib/rails_best_practices/analyzer.rb +13 -13
  6. data/lib/rails_best_practices/core/check.rb +7 -6
  7. data/lib/rails_best_practices/core/checking_visitor.rb +1 -1
  8. data/lib/rails_best_practices/core/runner.rb +2 -3
  9. data/lib/rails_best_practices/core_ext/sexp.rb +18 -17
  10. data/lib/rails_best_practices/lexicals.rb +1 -0
  11. data/lib/rails_best_practices/lexicals/long_line_check.rb +31 -0
  12. data/lib/rails_best_practices/prepares/config_prepare.rb +1 -1
  13. data/lib/rails_best_practices/reviews.rb +2 -0
  14. data/lib/rails_best_practices/reviews/add_model_virtual_attribute_review.rb +2 -2
  15. data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +1 -1
  16. data/lib/rails_best_practices/reviews/hash_syntax_review.rb +63 -0
  17. data/lib/rails_best_practices/reviews/keep_finders_on_their_own_model_review.rb +1 -1
  18. data/lib/rails_best_practices/reviews/move_code_into_model_review.rb +1 -1
  19. data/lib/rails_best_practices/reviews/move_finder_to_named_scope_review.rb +1 -1
  20. data/lib/rails_best_practices/reviews/move_model_logic_into_model_review.rb +1 -1
  21. data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +1 -1
  22. data/lib/rails_best_practices/reviews/overuse_route_customizations_review.rb +1 -1
  23. data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +15 -6
  24. data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +4 -2
  25. data/lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb +8 -4
  26. data/lib/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review.rb +2 -1
  27. data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +52 -8
  28. data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +14 -2
  29. data/lib/rails_best_practices/reviews/use_before_filter_review.rb +8 -3
  30. data/lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb +2 -1
  31. data/lib/rails_best_practices/reviews/use_observer_review.rb +1 -1
  32. data/lib/rails_best_practices/reviews/use_parentheses_in_method_def_review.rb +33 -0
  33. data/lib/rails_best_practices/reviews/use_query_attribute_review.rb +16 -6
  34. data/lib/rails_best_practices/reviews/use_say_with_time_in_migrations_review.rb +9 -6
  35. data/lib/rails_best_practices/reviews/use_scope_access_review.rb +8 -3
  36. data/lib/rails_best_practices/version.rb +1 -1
  37. data/rails_best_practices.yml +28 -25
  38. data/rake_rubies.sh +1 -1
  39. data/spec/rails_best_practices/analyzer_spec.rb +1 -1
  40. data/spec/rails_best_practices/core/check_spec.rb +7 -7
  41. data/spec/rails_best_practices/core/checking_visitor_spec.rb +7 -7
  42. data/spec/rails_best_practices/core/error_spec.rb +12 -12
  43. data/spec/rails_best_practices/core_ext/sexp_spec.rb +103 -85
  44. data/spec/rails_best_practices/lexicals/long_line_check_spec.rb +47 -0
  45. data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +1 -1
  46. data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +1 -1
  47. data/spec/rails_best_practices/prepares/config_prepare_spec.rb +1 -1
  48. data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +1 -1
  49. data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +1 -1
  50. data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +1 -1
  51. data/spec/rails_best_practices/prepares/model_prepare_spec.rb +4 -4
  52. data/spec/rails_best_practices/prepares/route_prepare_spec.rb +54 -54
  53. data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +6 -6
  54. data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +4 -4
  55. data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +46 -46
  56. data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +3 -3
  57. data/spec/rails_best_practices/reviews/hash_syntax_review_spec.rb +67 -0
  58. data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +8 -8
  59. data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +9 -9
  60. data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +7 -7
  61. data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +1 -1
  62. data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +1 -1
  63. data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +1 -1
  64. data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +13 -13
  65. data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +2 -2
  66. data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +3 -3
  67. data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +3 -3
  68. data/spec/rails_best_practices/reviews/not_use_times_ago_in_words_review_spec.rb +1 -1
  69. data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +26 -26
  70. data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +11 -2
  71. data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +1 -1
  72. data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +8 -8
  73. data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +2 -2
  74. data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +25 -10
  75. data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +3 -3
  76. data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +1 -1
  77. data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +28 -28
  78. data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +4 -4
  79. data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +15 -7
  80. data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +3 -3
  81. data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +3 -3
  82. data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +3 -3
  83. data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +5 -5
  84. data/spec/rails_best_practices/reviews/use_parenthesis_in_method_def_spec.rb +41 -0
  85. data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +3 -3
  86. data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +8 -8
  87. data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +9 -9
  88. data/spec/spec_helper.rb +1 -1
  89. metadata +36 -29
  90. data/.rspec.example +0 -2
  91. data/.rvmrc.example +0 -2
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe KeepFindersOnTheirOwnModelReview do
6
- let(:runner) { Core::Runner.new(:reviews => KeepFindersOnTheirOwnModelReview.new) }
6
+ let(:runner) { Core::Runner.new(reviews: KeepFindersOnTheirOwnModelReview.new) }
7
7
 
8
8
  it "should keep finders on thier own model" do
9
9
  content = <<-EOF
@@ -11,8 +11,8 @@ module RailsBestPractices
11
11
  has_many :comments
12
12
 
13
13
  def find_valid_comments
14
- self.comment.find(:all, :conditions => { :is_spam => false },
15
- :limit => 10)
14
+ self.comment.find(:all, conditions: { is_spam: false },
15
+ limit: 10)
16
16
  end
17
17
  end
18
18
  EOF
@@ -27,8 +27,8 @@ module RailsBestPractices
27
27
  has_many :comments
28
28
 
29
29
  def find_valid_comments
30
- self.comment.all(:conditions => { :is_spam => false },
31
- :limit => 10)
30
+ self.comment.all(conditions: { is_spam: false },
31
+ limit: 10)
32
32
  end
33
33
  end
34
34
  EOF
@@ -43,8 +43,8 @@ module RailsBestPractices
43
43
  has_many :comments
44
44
 
45
45
  def find_valid_comments
46
- self.find(:all, :conditions => { :is_spam => false },
47
- :limit => 10)
46
+ self.find(:all, conditions: { is_spam: false },
47
+ limit: 10)
48
48
  end
49
49
  end
50
50
  EOF
@@ -58,8 +58,8 @@ module RailsBestPractices
58
58
  has_many :comments
59
59
 
60
60
  def find_valid_comments
61
- Post.find(:all, :conditions => { :is_spam => false },
62
- :limit => 10)
61
+ Post.find(:all, conditions: { is_spam: false },
62
+ limit: 10)
63
63
  end
64
64
  end
65
65
  EOF
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe LawOfDemeterReview do
6
- let(:runner) { Core::Runner.new(:prepares => [Prepares::ModelPrepare.new, Prepares::SchemaPrepare.new], :reviews => LawOfDemeterReview.new) }
6
+ let(:runner) { Core::Runner.new(prepares: [Prepares::ModelPrepare.new, Prepares::SchemaPrepare.new], reviews: LawOfDemeterReview.new) }
7
7
 
8
8
  describe "belongs_to" do
9
9
  before(:each) do
@@ -15,7 +15,7 @@ module RailsBestPractices
15
15
  runner.prepare('app/models/invoice.rb', content)
16
16
 
17
17
  content = <<-EOF
18
- ActiveRecord::Schema.define(:version => 20110216150853) do
18
+ ActiveRecord::Schema.define(version: 20110216150853) do
19
19
  create_table "users", force => true do |t|
20
20
  t.string :name
21
21
  t.string :address
@@ -80,7 +80,7 @@ module RailsBestPractices
80
80
  runner.prepare('app/models/invoice.rb', content)
81
81
 
82
82
  content = <<-EOF
83
- ActiveRecord::Schema.define(:version => 20110216150853) do
83
+ ActiveRecord::Schema.define(version: 20110216150853) do
84
84
  create_table "prices", force => true do |t|
85
85
  t.string :currency
86
86
  t.integer :number
@@ -105,7 +105,7 @@ module RailsBestPractices
105
105
  before :each do
106
106
  content = <<-EOF
107
107
  class Comment < ActiveRecord::Base
108
- belongs_to :commentable, :polymorphic => true
108
+ belongs_to :commentable, polymorphic: true
109
109
  end
110
110
  EOF
111
111
  runner.prepare('app/models/comment.rb', content)
@@ -118,7 +118,7 @@ module RailsBestPractices
118
118
  runner.prepare('app/models/comment.rb', content)
119
119
 
120
120
  content = <<-EOF
121
- ActiveRecord::Schema.define(:version => 20110216150853) do
121
+ ActiveRecord::Schema.define(version: 20110216150853) do
122
122
  create_table "posts", force => true do |t|
123
123
  t.string :title
124
124
  end
@@ -140,13 +140,13 @@ module RailsBestPractices
140
140
  it "should no law of demeter with method call" do
141
141
  content = <<-EOF
142
142
  class Question < ActiveRecord::Base
143
- has_many :answers, :dependent => :destroy
143
+ has_many :answers, dependent: :destroy
144
144
  end
145
145
  EOF
146
146
  runner.prepare('app/models/question.rb', content)
147
147
  content = <<-EOF
148
148
  class Answer < ActiveRecord::Base
149
- belongs_to :question, :counter_cache => true, :touch => true
149
+ belongs_to :question, counter_cache: true, touch: true
150
150
  end
151
151
  EOF
152
152
  runner.prepare('app/models/answer.rb', content)
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe MoveCodeIntoControllerReview do
6
- let(:runner) { Core::Runner.new(:reviews => MoveCodeIntoControllerReview.new) }
6
+ let(:runner) { Core::Runner.new(reviews: MoveCodeIntoControllerReview.new) }
7
7
 
8
8
  it "should move code into controller for method call" do
9
9
  content = <<-EOF
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe MoveCodeIntoHelperReview do
6
- let(:runner) { Core::Runner.new(:reviews => MoveCodeIntoHelperReview.new('array_count' => 2)) }
6
+ let(:runner) { Core::Runner.new(reviews: MoveCodeIntoHelperReview.new('array_count' => 2)) }
7
7
 
8
8
  it "should move code into helper" do
9
9
  content = <<-EOF
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe MoveCodeIntoModelReview do
6
- let(:runner) { Core::Runner.new(:reviews => MoveCodeIntoModelReview.new) }
6
+ let(:runner) { Core::Runner.new(reviews: MoveCodeIntoModelReview.new) }
7
7
 
8
8
  it "should move code into model" do
9
9
  content =<<-EOF
@@ -3,26 +3,26 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe MoveFinderToNamedScopeReview do
6
- let(:runner) { Core::Runner.new(:reviews => MoveFinderToNamedScopeReview.new) }
6
+ let(:runner) { Core::Runner.new(reviews: MoveFinderToNamedScopeReview.new) }
7
7
 
8
8
  it "should move finder to named_scope" do
9
9
  content = <<-EOF
10
10
  class PostsController < ActionController::Base
11
11
  def index
12
- @public_posts = Post.find(:all, :conditions => { :state => 'public' },
13
- :limit => 10,
14
- :order => 'created_at desc')
12
+ @public_posts = Post.find(:all, conditions: { state: 'public' },
13
+ limit: 10,
14
+ order: 'created_at desc')
15
15
 
16
- @draft_posts = Post.find(:all, :conditions => { :state => 'draft' },
17
- :limit => 10,
18
- :order => 'created_at desc')
16
+ @draft_posts = Post.find(:all, conditions: { state: 'draft' },
17
+ limit: 10,
18
+ order: 'created_at desc')
19
19
  end
20
20
  end
21
21
  EOF
22
22
  runner.review('app/controllers/posts_controller.rb', content)
23
23
  runner.should have(2).errors
24
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:4 - move finder to named_scope"
25
- runner.errors[1].to_s.should == "app/controllers/posts_controller.rb:8 - move finder to named_scope"
24
+ runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:3 - move finder to named_scope"
25
+ runner.errors[1].to_s.should == "app/controllers/posts_controller.rb:7 - move finder to named_scope"
26
26
  end
27
27
 
28
28
  it "should not move simple finder" do
@@ -59,13 +59,13 @@ module RailsBestPractices
59
59
  content = <<-EOF
60
60
  class Post < ActiveRecord::Base
61
61
  def published
62
- Post.find(:all, :conditions => { :state => 'public' },
63
- :limit => 10, :order => 'created_at desc')
62
+ Post.find(:all, conditions: { state: 'public' },
63
+ limit: 10, order: 'created_at desc')
64
64
  end
65
65
 
66
66
  def published
67
- Post.find(:all, :conditions => { :state => 'draft' },
68
- :limit => 10, :order => 'created_at desc')
67
+ Post.find(:all, conditions: { state: 'draft' },
68
+ limit: 10, order: 'created_at desc')
69
69
  end
70
70
  end
71
71
  EOF
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe MoveModelLogicIntoModelReview do
6
- let(:runner) { Core::Runner.new(:reviews => MoveModelLogicIntoModelReview.new) }
6
+ let(:runner) { Core::Runner.new(reviews: MoveModelLogicIntoModelReview.new) }
7
7
 
8
8
  it "should move model logic into model" do
9
9
  content = <<-EOF
@@ -24,7 +24,7 @@ module RailsBestPractices
24
24
  EOF
25
25
  runner.review('app/controllers/posts_controller.rb', content)
26
26
  runner.should have(1).errors
27
- runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:3 - move model logic into model (@post use_count > 4)"
27
+ runner.errors[0].to_s.should == "app/controllers/posts_controller.rb:2 - move model logic into model (@post use_count > 4)"
28
28
  end
29
29
 
30
30
  it "should not move model logic into model with simple model calling" do
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe NeedlessDeepNestingReview do
6
- let(:runner) { Core::Runner.new(:reviews => NeedlessDeepNestingReview.new) }
6
+ let(:runner) { Core::Runner.new(reviews: NeedlessDeepNestingReview.new) }
7
7
 
8
8
  describe "rails2" do
9
9
  it "should needless deep nesting" do
@@ -21,7 +21,7 @@ module RailsBestPractices
21
21
 
22
22
  it "should not needless deep nesting for shallow" do
23
23
  content = <<-EOF
24
- map.resources :posts, :shallow => true do |post|
24
+ map.resources :posts, shallow: true do |post|
25
25
  post.resources :comments do |comment|
26
26
  comment.resources :favorites
27
27
  end
@@ -100,7 +100,7 @@ module RailsBestPractices
100
100
 
101
101
  it "should not needless deep nesting for shallow" do
102
102
  content = <<-EOF
103
- resources :posts, :shallow => true do
103
+ resources :posts, shallow: true do
104
104
  resources :comments do
105
105
  resources :favorites
106
106
  end
@@ -3,13 +3,13 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe NotUseDefaultRouteReview do
6
- let(:runner) { Core::Runner.new(:reviews => NotUseDefaultRouteReview.new) }
6
+ let(:runner) { Core::Runner.new(reviews: NotUseDefaultRouteReview.new) }
7
7
 
8
8
  describe "rails2" do
9
9
  it "should not use default route" do
10
10
  content = <<-EOF
11
11
  ActionController::Routing::Routes.draw do |map|
12
- map.resources :posts, :member => { :push => :post }
12
+ map.resources :posts, member: { push: :post }
13
13
 
14
14
  map.connect ':controller/:action/:id'
15
15
  map.connect ':controller/:action/:id.:format'
@@ -24,7 +24,7 @@ module RailsBestPractices
24
24
  it "should no not use default route" do
25
25
  content = <<-EOF
26
26
  ActionController::Routing::Routes.draw do |map|
27
- map.resources :posts, :member => { :push => :post }
27
+ map.resources :posts, member: { push: :post }
28
28
  end
29
29
  EOF
30
30
  runner.review('config/routes.rb', content)
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe NotUseTimeAgoInWordsReview do
6
- let(:runner) { Core::Runner.new(:reviews => NotUseTimeAgoInWordsReview.new) }
6
+ let(:runner) { Core::Runner.new(reviews: NotUseTimeAgoInWordsReview.new) }
7
7
 
8
8
  describe "time_ago_in_words" do
9
9
  it "should not use in views" do
@@ -3,16 +3,16 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe OveruseRouteCustomizationsReview do
6
- let(:runner) { Core::Runner.new(:reviews => OveruseRouteCustomizationsReview.new) }
6
+ let(:runner) { Core::Runner.new(reviews: OveruseRouteCustomizationsReview.new) }
7
7
 
8
8
  describe "rails2" do
9
9
  it "should overuse route customizations" do
10
10
  content = <<-EOF
11
11
  ActionController::Routing::Routes.draw do |map|
12
- map.resources :posts, :member => { :comments => :get,
13
- :create_comment => :post,
14
- :update_comment => :update,
15
- :delete_comment => :delete }
12
+ map.resources :posts, member: { comments: :get,
13
+ create_comment: :post,
14
+ update_comment: :update,
15
+ delete_comment: :delete }
16
16
  end
17
17
  EOF
18
18
  runner.review('config/routes.rb', content)
@@ -23,10 +23,10 @@ module RailsBestPractices
23
23
  it "should overuse route customizations with member" do
24
24
  content = <<-EOF
25
25
  ActionController::Routing::Routes.draw do |map|
26
- map.resources :posts, :member => { :create_comment => :post,
27
- :update_comment => :update,
28
- :delete_comment => :delete,
29
- :disable_comment => :post }
26
+ map.resources :posts, member: { create_comment: :post,
27
+ update_comment: :update,
28
+ delete_comment: :delete,
29
+ disable_comment: :post }
30
30
  end
31
31
  EOF
32
32
  runner.review('config/routes.rb', content)
@@ -37,10 +37,10 @@ module RailsBestPractices
37
37
  it "should overuse route customizations with collection" do
38
38
  content = <<-EOF
39
39
  ActionController::Routing::Routes.draw do |map|
40
- map.resources :posts, :collection => { :list_comments => :get,
41
- :update_comments => :get,
42
- :delete_comments => :get,
43
- :disable_comments => :get }
40
+ map.resources :posts, collection: { list_comments: :get,
41
+ update_comments: :get,
42
+ delete_comments: :get,
43
+ disable_comments: :get }
44
44
  end
45
45
  EOF
46
46
  runner.review('config/routes.rb', content)
@@ -52,10 +52,10 @@ module RailsBestPractices
52
52
  content = <<-EOF
53
53
  ActionController::Routing::Routes.draw do |map|
54
54
  map.resources :categories do |category|
55
- category.resources :posts, :member => { :create_comment => :post,
56
- :update_comment => :update,
57
- :delete_comment => :delete },
58
- :collection => { :comments => :get }
55
+ category.resources :posts, member: { create_comment: :post,
56
+ update_comment: :update,
57
+ delete_comment: :delete },
58
+ collection: { comments: :get }
59
59
  end
60
60
  end
61
61
  EOF
@@ -68,8 +68,8 @@ module RailsBestPractices
68
68
  content = <<-EOF
69
69
  ActionController::Routing::Routes.draw do |map|
70
70
  map.resources :categories do |category|
71
- category.resources :posts, :member => [:create_comment, :update_comment, :delete_comment],
72
- :collection => [:comments]
71
+ category.resources :posts, member: [:create_comment, :update_comment, :delete_comment],
72
+ collection: [:comments]
73
73
  end
74
74
  end
75
75
  EOF
@@ -91,7 +91,7 @@ module RailsBestPractices
91
91
  it "should not overuse route customizations when customize route is only one" do
92
92
  content = <<-EOF
93
93
  ActionController::Routing::Routes.draw do |map|
94
- map.resources :posts, :member => { :vote => :post }
94
+ map.resources :posts, member: { vote: :post }
95
95
  end
96
96
  EOF
97
97
  runner.review('config/routes.rb', content)
@@ -102,8 +102,8 @@ module RailsBestPractices
102
102
  content =<<-EOF
103
103
  IP_PATTERN = /(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2}))|[\d]+/.freeze
104
104
  map.resources :vlans do |vlan|
105
- vlan.resources :ip_ranges, :member => {:move => [:get, :post]} do |range|
106
- range.resources :ips, :requirements => { :id => IP_PATTERN }
105
+ vlan.resources :ip_ranges, member: {move: [:get, :post]} do |range|
106
+ range.resources :ips, requirements: { id: IP_PATTERN }
107
107
  end
108
108
  end
109
109
  EOF
@@ -138,10 +138,10 @@ module RailsBestPractices
138
138
  content = <<-EOF
139
139
  RailsBestpracticesCom::Application.routes.draw do
140
140
  resources :posts do
141
- post :create_comment, :on => :member
142
- update :update_comment, :on => :member
143
- delete :delete_comment, :on => :member
144
- get :comments, :on => :collection
141
+ post :create_comment, on: :member
142
+ update :update_comment, on: :member
143
+ delete :delete_comment, on: :member
144
+ get :comments, on: :collection
145
145
  end
146
146
  end
147
147
  EOF
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe ProtectMassAssignmentReview do
6
- let(:runner) { Core::Runner.new(:reviews => ProtectMassAssignmentReview.new) }
6
+ let(:runner) { Core::Runner.new(reviews: ProtectMassAssignmentReview.new) }
7
7
 
8
8
  it "should protect mass assignment" do
9
9
  content =<<-EOF
@@ -48,7 +48,7 @@ module RailsBestPractices
48
48
  it "should not protect mass assignment if using devise" do
49
49
  content =<<-EOF
50
50
  class User < ActiveRecord::Base
51
- devise :database_authenticatable, :registerable, :confirmable, :recoverable, :stretches => 20
51
+ devise :database_authenticatable, :registerable, :confirmable, :recoverable, stretches: 20
52
52
  end
53
53
  EOF
54
54
  runner.review('app/models/user.rb', content)
@@ -93,6 +93,15 @@ module RailsBestPractices
93
93
  runner.review('app/models/user.rb', content)
94
94
  runner.should have(0).errors
95
95
  end
96
+
97
+ it "should not protect mass assignment if checking non ActiveRecord::Base inherited model" do
98
+ content =<<-EOF
99
+ class User < Person
100
+ end
101
+ EOF
102
+ runner.review('app/models/user.rb', content)
103
+ runner.should have(0).errors
104
+ end
96
105
  end
97
106
  end
98
107
  end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  module RailsBestPractices
4
4
  module Reviews
5
5
  describe RemoveEmptyHelpersReview do
6
- let(:runner) { Core::Runner.new(:reviews => RemoveEmptyHelpersReview.new) }
6
+ let(:runner) { Core::Runner.new(reviews: RemoveEmptyHelpersReview.new) }
7
7
 
8
8
  it "should remove empty helpers" do
9
9
  content =<<-EOF
@@ -4,8 +4,8 @@ module RailsBestPractices
4
4
  module Reviews
5
5
  describe RemoveUnusedMethodsInControllersReview do
6
6
  let(:runner) { Core::Runner.new(
7
- :prepares => [Prepares::ControllerPrepare.new, Prepares::RoutePrepare.new],
8
- :reviews => RemoveUnusedMethodsInControllersReview.new({'except_methods' => ["ExceptableController#*"]})
7
+ prepares: [Prepares::ControllerPrepare.new, Prepares::RoutePrepare.new],
8
+ reviews: RemoveUnusedMethodsInControllersReview.new({'except_methods' => ["ExceptableController#*"]})
9
9
  ) }
10
10
 
11
11
  context "private/protected" do
@@ -127,7 +127,7 @@ module RailsBestPractices
127
127
  it "should not remove unused methods if all actions are used in route" do
128
128
  content =<<-EOF
129
129
  ActionController::Routing::Routes.draw do |map|
130
- map.connect 'internal/:action/*whatever', :controller => "internal"
130
+ map.connect 'internal/:action/*whatever', controller: "internal"
131
131
  end
132
132
  EOF
133
133
  runner.prepare('config/routes.rb', content)
@@ -214,7 +214,7 @@ module RailsBestPractices
214
214
  end
215
215
  end
216
216
 
217
- context "delegate :to => :controller" do
217
+ context "delegate to: :controller" do
218
218
  it "should remove unused methods if delegate method is not called" do
219
219
  content = <<-EOF
220
220
  class PostsController < ApplicationController
@@ -226,7 +226,7 @@ module RailsBestPractices
226
226
  runner.review('app/controllers/posts_controller.rb', content)
227
227
  content = <<-EOF
228
228
  module PostsHelper
229
- delegate :helper_post, :to => :controller
229
+ delegate :helper_post, to: :controller
230
230
  end
231
231
  EOF
232
232
  runner.review('app/helpers/posts_helper.rb', content)
@@ -246,7 +246,7 @@ module RailsBestPractices
246
246
  runner.review('app/controllers/posts_controller.rb', content)
247
247
  content = <<-EOF
248
248
  module PostsHelper
249
- delegate :helper_post, :to => :controller
249
+ delegate :helper_post, to: :controller
250
250
  end
251
251
  EOF
252
252
  runner.review('app/helpers/posts_helper.rb', content)
@@ -295,8 +295,8 @@ module RailsBestPractices
295
295
  content =<<-EOF
296
296
  class PostsCell < Cell::Rails
297
297
  def list
298
- render :state => :show
299
- render(:state => :display)
298
+ render state: :show
299
+ render(state: :display)
300
300
  end
301
301
 
302
302
  def show; end