rails_best_practices 1.9.1 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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