rails_best_practices 1.19.5 → 1.22.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/CHANGELOG.md +10 -16
  4. data/Gemfile +2 -1
  5. data/Gemfile.lock +51 -45
  6. data/Guardfile +2 -0
  7. data/Rakefile +2 -17
  8. data/assets/result.html.erb +2 -0
  9. data/lib/rails_best_practices/analyzer.rb +59 -48
  10. data/lib/rails_best_practices/core/check.rb +39 -32
  11. data/lib/rails_best_practices/core/checks_loader.rb +8 -6
  12. data/lib/rails_best_practices/core/configs.rb +1 -2
  13. data/lib/rails_best_practices/core/controllers.rb +1 -2
  14. data/lib/rails_best_practices/core/error.rb +1 -1
  15. data/lib/rails_best_practices/core/helpers.rb +1 -2
  16. data/lib/rails_best_practices/core/mailers.rb +1 -2
  17. data/lib/rails_best_practices/core/methods.rb +21 -16
  18. data/lib/rails_best_practices/core/model_associations.rb +9 -4
  19. data/lib/rails_best_practices/core/models.rb +1 -2
  20. data/lib/rails_best_practices/core/modules.rb +1 -1
  21. data/lib/rails_best_practices/core/routes.rb +2 -2
  22. data/lib/rails_best_practices/core/runner.rb +49 -34
  23. data/lib/rails_best_practices/inline_disables/comment_ripper.rb +19 -0
  24. data/lib/rails_best_practices/inline_disables/inline_disable.rb +50 -0
  25. data/lib/rails_best_practices/inline_disables.rb +3 -0
  26. data/lib/rails_best_practices/lexicals/long_line_check.rb +7 -3
  27. data/lib/rails_best_practices/option_parser.rb +22 -6
  28. data/lib/rails_best_practices/prepares/controller_prepare.rb +15 -3
  29. data/lib/rails_best_practices/prepares/gemfile_prepare.rb +1 -1
  30. data/lib/rails_best_practices/prepares/helper_prepare.rb +6 -1
  31. data/lib/rails_best_practices/prepares/initializer_prepare.rb +2 -2
  32. data/lib/rails_best_practices/prepares/mailer_prepare.rb +1 -0
  33. data/lib/rails_best_practices/prepares/model_prepare.rb +52 -12
  34. data/lib/rails_best_practices/prepares/route_prepare.rb +16 -10
  35. data/lib/rails_best_practices/prepares.rb +1 -1
  36. data/lib/rails_best_practices/reviews/add_model_virtual_attribute_review.rb +15 -13
  37. data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +36 -31
  38. data/lib/rails_best_practices/reviews/check_destroy_return_value_review.rb +14 -5
  39. data/lib/rails_best_practices/reviews/check_save_return_value_review.rb +19 -8
  40. data/lib/rails_best_practices/reviews/hash_syntax_review.rb +5 -5
  41. data/lib/rails_best_practices/reviews/isolate_seed_data_review.rb +4 -4
  42. data/lib/rails_best_practices/reviews/keep_finders_on_their_own_model_review.rb +7 -8
  43. data/lib/rails_best_practices/reviews/law_of_demeter_review.rb +6 -6
  44. data/lib/rails_best_practices/reviews/move_code_into_controller_review.rb +1 -1
  45. data/lib/rails_best_practices/reviews/move_code_into_helper_review.rb +6 -7
  46. data/lib/rails_best_practices/reviews/move_finder_to_named_scope_review.rb +7 -8
  47. data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +12 -10
  48. data/lib/rails_best_practices/reviews/not_use_default_route_review.rb +1 -2
  49. data/lib/rails_best_practices/reviews/overuse_route_customizations_review.rb +5 -5
  50. data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +5 -2
  51. data/lib/rails_best_practices/reviews/remove_unused_methods_in_controllers_review.rb +6 -3
  52. data/lib/rails_best_practices/reviews/remove_unused_methods_in_helpers_review.rb +6 -4
  53. data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +29 -9
  54. data/lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb +3 -3
  55. data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +17 -15
  56. data/lib/rails_best_practices/reviews/simplify_render_in_controllers_review.rb +1 -2
  57. data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +3 -3
  58. data/lib/rails_best_practices/reviews/use_before_filter_review.rb +2 -1
  59. data/lib/rails_best_practices/reviews/use_model_association_review.rb +6 -6
  60. data/lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb +9 -8
  61. data/lib/rails_best_practices/reviews/use_observer_review.rb +9 -9
  62. data/lib/rails_best_practices/reviews/use_query_attribute_review.rb +26 -26
  63. data/lib/rails_best_practices/reviews/use_say_with_time_in_migrations_review.rb +8 -7
  64. data/lib/rails_best_practices/reviews/use_scope_access_review.rb +17 -15
  65. data/lib/rails_best_practices/reviews/use_turbo_sprockets_rails3_review.rb +2 -1
  66. data/lib/rails_best_practices/version.rb +1 -1
  67. data/lib/rails_best_practices.rb +2 -2
  68. data/rails_best_practices.gemspec +35 -36
  69. data/spec/fixtures/lib/rails_best_practices/plugins/reviews/not_use_rails_root_review.rb +1 -2
  70. data/spec/rails_best_practices/analyzer_spec.rb +73 -42
  71. data/spec/rails_best_practices/core/check_spec.rb +5 -5
  72. data/spec/rails_best_practices/core/checks_loader_spec.rb +3 -3
  73. data/spec/rails_best_practices/core/configs_spec.rb +1 -1
  74. data/spec/rails_best_practices/core/controllers_spec.rb +1 -1
  75. data/spec/rails_best_practices/core/error_spec.rb +21 -21
  76. data/spec/rails_best_practices/core/except_methods_spec.rb +7 -7
  77. data/spec/rails_best_practices/core/gems_spec.rb +4 -4
  78. data/spec/rails_best_practices/core/helpers_spec.rb +1 -1
  79. data/spec/rails_best_practices/core/klasses_spec.rb +3 -3
  80. data/spec/rails_best_practices/core/mailers_spec.rb +1 -1
  81. data/spec/rails_best_practices/core/methods_spec.rb +6 -6
  82. data/spec/rails_best_practices/core/model_associations_spec.rb +10 -6
  83. data/spec/rails_best_practices/core/model_attributes_spec.rb +4 -4
  84. data/spec/rails_best_practices/core/models_spec.rb +1 -1
  85. data/spec/rails_best_practices/core/modules_spec.rb +5 -5
  86. data/spec/rails_best_practices/core/routes_spec.rb +5 -5
  87. data/spec/rails_best_practices/core/runner_spec.rb +9 -7
  88. data/spec/rails_best_practices/core_ext/erubis_spec.rb +10 -10
  89. data/spec/rails_best_practices/inline_disables/inline_disable_spec.rb +62 -0
  90. data/spec/rails_best_practices/lexicals/long_line_check_spec.rb +11 -10
  91. data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +6 -6
  92. data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +6 -6
  93. data/spec/rails_best_practices/prepares/config_prepare_spec.rb +2 -2
  94. data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +18 -10
  95. data/spec/rails_best_practices/prepares/gemfile_prepare_spec.rb +2 -2
  96. data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +3 -3
  97. data/spec/rails_best_practices/prepares/initializer_prepare_spec.rb +3 -3
  98. data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +2 -2
  99. data/spec/rails_best_practices/prepares/model_prepare_spec.rb +79 -43
  100. data/spec/rails_best_practices/prepares/route_prepare_spec.rb +138 -77
  101. data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +2 -2
  102. data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +18 -12
  103. data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +28 -22
  104. data/spec/rails_best_practices/reviews/check_destroy_return_value_review_spec.rb +15 -13
  105. data/spec/rails_best_practices/reviews/check_save_return_value_review_spec.rb +31 -21
  106. data/spec/rails_best_practices/reviews/default_scope_is_evil_review_spec.rb +6 -6
  107. data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +5 -5
  108. data/spec/rails_best_practices/reviews/hash_syntax_review_spec.rb +9 -9
  109. data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +7 -7
  110. data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +9 -9
  111. data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +21 -14
  112. data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +6 -6
  113. data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +11 -6
  114. data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +26 -16
  115. data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +7 -7
  116. data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +9 -7
  117. data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +9 -9
  118. data/spec/rails_best_practices/reviews/not_rescue_exception_review_spec.rb +9 -9
  119. data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +5 -5
  120. data/spec/rails_best_practices/reviews/not_use_time_ago_in_words_review_spec.rb +7 -7
  121. data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +7 -7
  122. data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +24 -19
  123. data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +6 -6
  124. data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +44 -31
  125. data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +17 -12
  126. data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +46 -44
  127. data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +10 -8
  128. data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +16 -10
  129. data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +54 -31
  130. data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +9 -9
  131. data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +13 -13
  132. data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +11 -9
  133. data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +7 -7
  134. data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +21 -17
  135. data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +6 -6
  136. data/spec/rails_best_practices/reviews/use_parentheses_in_method_def_review_spec.rb +9 -7
  137. data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +31 -24
  138. data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +15 -11
  139. data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +14 -14
  140. data/spec/rails_best_practices/reviews/use_turbo_sprockets_rails3_review_spec.rb +10 -8
  141. metadata +16 -11
@@ -5,9 +5,9 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Reviews
7
7
  describe UseObserverReview do
8
- let(:runner) { Core::Runner.new(prepares: Prepares::MailerPrepare.new, reviews: UseObserverReview.new) }
8
+ let(:runner) { Core::Runner.new(prepares: Prepares::MailerPrepare.new, reviews: described_class.new) }
9
9
 
10
- before :each do
10
+ before do
11
11
  content = <<-EOF
12
12
  class ProjectMailer < ActionMailer::Base
13
13
  end
@@ -15,7 +15,7 @@ module RailsBestPractices
15
15
  runner.prepare('app/models/project_mailer.rb', content)
16
16
  end
17
17
 
18
- it 'should use observer' do
18
+ it 'uses observer' do
19
19
  content = <<-EOF
20
20
  class Project < ActiveRecord::Base
21
21
  after_create :send_create_notification
@@ -33,7 +33,7 @@ module RailsBestPractices
33
33
  expect(runner.errors[0].to_s).to eq('app/models/project.rb:5 - use observer')
34
34
  end
35
35
 
36
- it 'should not use observer without callback' do
36
+ it 'does not use observer without callback' do
37
37
  content = <<-EOF
38
38
  class Project < ActiveRecord::Base
39
39
  private
@@ -48,7 +48,7 @@ module RailsBestPractices
48
48
  expect(runner.errors.size).to eq(0)
49
49
  end
50
50
 
51
- it 'should use observer with two after_create' do
51
+ it 'uses observer with two after_create' do
52
52
  content = <<-EOF
53
53
  class Project < ActiveRecord::Base
54
54
  after_create :send_create_notification, :update_author
@@ -69,7 +69,7 @@ module RailsBestPractices
69
69
  expect(runner.errors[0].to_s).to eq('app/models/project.rb:5 - use observer')
70
70
  end
71
71
 
72
- it 'should not raise when initiate an object in callback' do
72
+ it 'does not raise when initiate an object in callback' do
73
73
  content = <<-EOF
74
74
  class Project < ActiveRecord::Base
75
75
  after_create ProjectMailer.new
@@ -5,9 +5,9 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Reviews
7
7
  describe UseParenthesesInMethodDefReview do
8
- let(:runner) { Core::Runner.new(reviews: UseParenthesesInMethodDefReview.new) }
8
+ let(:runner) { Core::Runner.new(reviews: described_class.new) }
9
9
 
10
- it 'should find missing parentheses' do
10
+ it 'finds missing parentheses' do
11
11
  content = <<-EOF
12
12
  class PostsController < ApplicationController
13
13
  def edit foo, bar
@@ -16,9 +16,11 @@ module RailsBestPractices
16
16
  EOF
17
17
  runner.review('app/controllers/posts_controller.rb', content)
18
18
  expect(runner.errors.size).to eq(1)
19
- expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:2 - use parentheses around parameters in method definitions')
19
+ expect(runner.errors[0].to_s).to eq(
20
+ 'app/controllers/posts_controller.rb:2 - use parentheses around parameters in method definitions'
21
+ )
20
22
  end
21
- it 'should find parentheses with no error' do
23
+ it 'finds parentheses with no error' do
22
24
  content = <<-EOF
23
25
  class PostsController < ApplicationController
24
26
  def edit(foo, bar)
@@ -28,7 +30,7 @@ module RailsBestPractices
28
30
  runner.review('app/controllers/posts_controller.rb', content)
29
31
  expect(runner.errors.size).to eq(0)
30
32
  end
31
- it 'should not throw an error without parameters' do
33
+ it 'does not throw an error without parameters' do
32
34
  content = <<-EOF
33
35
  class PostsController < ApplicationController
34
36
  def edit
@@ -39,8 +41,8 @@ module RailsBestPractices
39
41
  expect(runner.errors.size).to eq(0)
40
42
  end
41
43
 
42
- it 'should not check ignored files' do
43
- runner = Core::Runner.new(reviews: UseParenthesesInMethodDefReview.new(ignored_files: /posts_controller/))
44
+ it 'does not check ignored files' do
45
+ runner = Core::Runner.new(reviews: described_class.new(ignored_files: /posts_controller/))
44
46
  content = <<-EOF
45
47
  class PostsController < ApplicationController
46
48
  def edit foo, bar
@@ -5,9 +5,13 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Reviews
7
7
  describe UseQueryAttributeReview do
8
- let(:runner) { Core::Runner.new(prepares: [Prepares::ModelPrepare.new, Prepares::SchemaPrepare.new], reviews: UseQueryAttributeReview.new) }
8
+ let(:runner) do
9
+ Core::Runner.new(
10
+ prepares: [Prepares::ModelPrepare.new, Prepares::SchemaPrepare.new], reviews: described_class.new
11
+ )
12
+ end
9
13
 
10
- before :each do
14
+ before do
11
15
  content = <<-EOF
12
16
  class User < ActiveRecord::Base
13
17
  has_many :projects
@@ -30,7 +34,7 @@ module RailsBestPractices
30
34
  runner.prepare('db/schema.rb', content)
31
35
  end
32
36
 
33
- it 'should use query attribute by blank call' do
37
+ it 'uses query attribute by blank call' do
34
38
  content = <<-EOF
35
39
  <% if @user.login.blank? %>
36
40
  <%= link_to 'login', new_session_path %>
@@ -41,7 +45,7 @@ module RailsBestPractices
41
45
  expect(runner.errors[0].to_s).to eq('app/views/users/show.html.erb:1 - use query attribute (@user.login?)')
42
46
  end
43
47
 
44
- it 'should use query attribute by blank call with if in one line' do
48
+ it 'uses query attribute by blank call with if in one line' do
45
49
  content = <<-EOF
46
50
  <%= link_to 'login', new_session_path if @user.login.blank? %>
47
51
  EOF
@@ -50,7 +54,7 @@ module RailsBestPractices
50
54
  expect(runner.errors[0].to_s).to eq('app/views/users/show.html.erb:1 - use query attribute (@user.login?)')
51
55
  end
52
56
 
53
- it "should use query attribute by blank call with '? :'" do
57
+ it "uses query attribute by blank call with '? :'" do
54
58
  content = <<-EOF
55
59
  <%= @user.login.blank? ? link_to('login', new_session_path) : '' %>
56
60
  EOF
@@ -59,7 +63,7 @@ module RailsBestPractices
59
63
  expect(runner.errors[0].to_s).to eq('app/views/users/show.html.erb:1 - use query attribute (@user.login?)')
60
64
  end
61
65
 
62
- it 'should use query attribute by comparing empty string' do
66
+ it 'uses query attribute by comparing empty string' do
63
67
  content = <<-EOF
64
68
  <% if @user.login == "" %>
65
69
  <%= link_to 'login', new_session_path %>
@@ -70,7 +74,7 @@ module RailsBestPractices
70
74
  expect(runner.errors[0].to_s).to eq('app/views/users/show.html.erb:1 - use query attribute (@user.login?)')
71
75
  end
72
76
 
73
- it 'should use query attribute by nil call' do
77
+ it 'uses query attribute by nil call' do
74
78
  content = <<-EOF
75
79
  <% if @user.login.nil? %>
76
80
  <%= link_to 'login', new_session_path %>
@@ -81,7 +85,7 @@ module RailsBestPractices
81
85
  expect(runner.errors[0].to_s).to eq('app/views/users/show.html.erb:1 - use query attribute (@user.login?)')
82
86
  end
83
87
 
84
- it 'should use query attribute by present call' do
88
+ it 'uses query attribute by present call' do
85
89
  content = <<-EOF
86
90
  <% if @user.login.present? %>
87
91
  <%= @user.login %>
@@ -92,7 +96,7 @@ module RailsBestPractices
92
96
  expect(runner.errors[0].to_s).to eq('app/views/users/show.html.erb:1 - use query attribute (@user.login?)')
93
97
  end
94
98
 
95
- it 'should use query attribute within and conditions' do
99
+ it 'uses query attribute within and conditions' do
96
100
  content = <<-EOF
97
101
  <% if @user.active? && @user.login.present? %>
98
102
  <%= @user.login %>
@@ -103,7 +107,7 @@ module RailsBestPractices
103
107
  expect(runner.errors[0].to_s).to eq('app/views/users/show.html.erb:1 - use query attribute (@user.login?)')
104
108
  end
105
109
 
106
- it 'should use query attribute within or conditions' do
110
+ it 'uses query attribute within or conditions' do
107
111
  content = <<-EOF
108
112
  <% if @user.active? or @user.login != "" %>
109
113
  <%= @user.login %>
@@ -114,7 +118,7 @@ module RailsBestPractices
114
118
  expect(runner.errors[0].to_s).to eq('app/views/users/show.html.erb:1 - use query attribute (@user.login?)')
115
119
  end
116
120
 
117
- it 'should not use query attribute' do
121
+ it 'does not use query attribute' do
118
122
  content = <<-EOF
119
123
  <% if @user.login? %>
120
124
  <%= @user.login %>
@@ -124,7 +128,7 @@ module RailsBestPractices
124
128
  expect(runner.errors.size).to eq(0)
125
129
  end
126
130
 
127
- it 'should not use query attribute for number' do
131
+ it 'does not use query attribute for number' do
128
132
  content = <<-EOF
129
133
  <% unless @user.age.blank? %>
130
134
  <%= @user.age %>
@@ -134,7 +138,7 @@ module RailsBestPractices
134
138
  expect(runner.errors.size).to eq(0)
135
139
  end
136
140
 
137
- it 'should not review for pluralize attribute' do
141
+ it 'does not review for pluralize attribute' do
138
142
  content = <<-EOF
139
143
  <% if @user.roles.blank? %>
140
144
  <%= @user.login %>
@@ -144,7 +148,7 @@ module RailsBestPractices
144
148
  expect(runner.errors.size).to eq(0)
145
149
  end
146
150
 
147
- it 'should not review non model class' do
151
+ it 'does not review non model class' do
148
152
  content = <<-EOF
149
153
  <% if @person.login.present? %>
150
154
  <%= @person.login %>
@@ -155,7 +159,7 @@ module RailsBestPractices
155
159
  end
156
160
 
157
161
  context 'association' do
158
- it 'should not review belongs_to association' do
162
+ it 'does not review belongs_to association' do
159
163
  content = <<-EOF
160
164
  <% if @user.location.present? %>
161
165
  <%= @user.location.name %>
@@ -165,7 +169,7 @@ module RailsBestPractices
165
169
  expect(runner.errors.size).to eq(0)
166
170
  end
167
171
 
168
- it 'should not review belongs_to category' do
172
+ it 'does not review belongs_to category' do
169
173
  content = <<-EOF
170
174
  <% if @user.category.present? %>
171
175
  <%= @user.category.name %>
@@ -175,7 +179,7 @@ module RailsBestPractices
175
179
  expect(runner.errors.size).to eq(0)
176
180
  end
177
181
 
178
- it 'should not review has_one association' do
182
+ it 'does not review has_one association' do
179
183
  content = <<-EOF
180
184
  <% if @user.phone.present? %>
181
185
  <%= @user.phone.number %>
@@ -185,7 +189,7 @@ module RailsBestPractices
185
189
  expect(runner.errors.size).to eq(0)
186
190
  end
187
191
 
188
- it 'should not review has_many association' do
192
+ it 'does not review has_many association' do
189
193
  content = <<-EOF
190
194
  <% if @user.projects.present? %>
191
195
  <%= @user.projects.first.name %>
@@ -196,7 +200,7 @@ module RailsBestPractices
196
200
  end
197
201
  end
198
202
 
199
- it 'should not review for class method' do
203
+ it 'does not review for class method' do
200
204
  content = <<-EOF
201
205
  <% if User.name.present? %>
202
206
  <%= User.name %>
@@ -206,7 +210,7 @@ module RailsBestPractices
206
210
  expect(runner.errors.size).to eq(0)
207
211
  end
208
212
 
209
- it 'should not review for non attribute call' do
213
+ it 'does not review for non attribute call' do
210
214
  content = <<-EOF
211
215
  if @user.login(false).nil?
212
216
  puts @user.login(false)
@@ -216,7 +220,7 @@ module RailsBestPractices
216
220
  expect(runner.errors.size).to eq(0)
217
221
  end
218
222
 
219
- it 'should not raise error for common conditional statement' do
223
+ it 'does not raise error for common conditional statement' do
220
224
  content = <<-EOF
221
225
  if voteable.is_a? Answer
222
226
  puts voteable.title
@@ -225,9 +229,12 @@ module RailsBestPractices
225
229
  expect { runner.review('app/models/users_controller.rb', content) }.not_to raise_error
226
230
  end
227
231
 
228
- it 'should not check ignored files' do
229
- runner = Core::Runner.new(prepares: [Prepares::ModelPrepare.new, Prepares::SchemaPrepare.new],
230
- reviews: UseQueryAttributeReview.new(ignored_files: /users\/show/))
232
+ it 'does not check ignored files' do
233
+ runner =
234
+ Core::Runner.new(
235
+ prepares: [Prepares::ModelPrepare.new, Prepares::SchemaPrepare.new],
236
+ reviews: described_class.new(ignored_files: %r{users/show})
237
+ )
231
238
  content = <<-EOF
232
239
  <% if @user.login.blank? %>
233
240
  <%= link_to 'login', new_session_path %>
@@ -5,9 +5,9 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Reviews
7
7
  describe UseSayWithTimeInMigrationsReview do
8
- let(:runner) { Core::Runner.new(reviews: UseSayWithTimeInMigrationsReview.new) }
8
+ let(:runner) { Core::Runner.new(reviews: described_class.new) }
9
9
 
10
- it 'should use say with time in migrations' do
10
+ it 'uses say with time in migrations' do
11
11
  content = <<-EOF
12
12
  def self.up
13
13
  User.find_each do |user|
@@ -18,10 +18,12 @@ module RailsBestPractices
18
18
  EOF
19
19
  runner.review('db/migrate/20101010080658_update_users.rb', content)
20
20
  expect(runner.errors.size).to eq(1)
21
- expect(runner.errors[0].to_s).to eq('db/migrate/20101010080658_update_users.rb:2 - use say with time in migrations')
21
+ expect(runner.errors[0].to_s).to eq(
22
+ 'db/migrate/20101010080658_update_users.rb:2 - use say with time in migrations'
23
+ )
22
24
  end
23
25
 
24
- it 'should use say with time in migrations with create_table' do
26
+ it 'uses say with time in migrations with create_table' do
25
27
  content = <<-EOF
26
28
  def self.up
27
29
  create_table :users do |t|
@@ -37,10 +39,12 @@ module RailsBestPractices
37
39
  EOF
38
40
  runner.review('db/migrate/20101010080658_update_users.rb', content)
39
41
  expect(runner.errors.size).to eq(1)
40
- expect(runner.errors[0].to_s).to eq('db/migrate/20101010080658_update_users.rb:7 - use say with time in migrations')
42
+ expect(runner.errors[0].to_s).to eq(
43
+ 'db/migrate/20101010080658_update_users.rb:7 - use say with time in migrations'
44
+ )
41
45
  end
42
46
 
43
- it 'should not use say with time in migrations' do
47
+ it 'does not use say with time in migrations' do
44
48
  content = <<-EOF
45
49
  def self.up
46
50
  say_with_time("Initialize first_name and last_name for users") do
@@ -56,7 +60,7 @@ module RailsBestPractices
56
60
  expect(runner.errors.size).to eq(0)
57
61
  end
58
62
 
59
- it 'should not use say with time in migrations when not first code line' do
63
+ it 'does not use say with time in migrations when not first code line' do
60
64
  content = <<-EOF
61
65
  def self.up
62
66
  User.find_each do |user|
@@ -70,7 +74,7 @@ module RailsBestPractices
70
74
  expect(runner.errors.size).to eq(0)
71
75
  end
72
76
 
73
- it 'should not use say with time when default migration message' do
77
+ it 'does not use say with time when default migration message' do
74
78
  content = <<-EOF
75
79
  def self.up
76
80
  create_table :users do |t|
@@ -84,7 +88,7 @@ module RailsBestPractices
84
88
  expect(runner.errors.size).to eq(0)
85
89
  end
86
90
 
87
- it 'should not raise an error' do
91
+ it 'does not raise an error' do
88
92
  content = <<-EOF
89
93
  class AddAdmin < ActiveRecord::Migration
90
94
 
@@ -120,8 +124,8 @@ module RailsBestPractices
120
124
  expect(runner.errors.size).to eq(3)
121
125
  end
122
126
 
123
- it 'should not check ignored files' do
124
- runner = Core::Runner.new(reviews: UseSayWithTimeInMigrationsReview.new(ignored_files: /20101010080658_update_users/))
127
+ it 'does not check ignored files' do
128
+ runner = Core::Runner.new(reviews: described_class.new(ignored_files: /20101010080658_update_users/))
125
129
  content = <<-EOF
126
130
  def self.up
127
131
  User.find_each do |user|
@@ -5,10 +5,10 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Reviews
7
7
  describe UseScopeAccessReview do
8
- let(:runner) { Core::Runner.new(reviews: UseScopeAccessReview.new) }
8
+ let(:runner) { Core::Runner.new(reviews: described_class.new) }
9
9
 
10
10
  context 'if' do
11
- it 'should use scope access' do
11
+ it 'uses scope access' do
12
12
  content = <<-EOF
13
13
  class PostsController < ApplicationController
14
14
  def edit
@@ -26,7 +26,7 @@ module RailsBestPractices
26
26
  expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:5 - use scope access')
27
27
  end
28
28
 
29
- it 'should use scope access with if in one line' do
29
+ it 'uses scope access with if in one line' do
30
30
  content = <<-EOF
31
31
  class PostsController < ApplicationController
32
32
  def edit
@@ -41,7 +41,7 @@ module RailsBestPractices
41
41
  expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:5 - use scope access')
42
42
  end
43
43
 
44
- it "should use scope access with '? :'" do
44
+ it "uses scope access with '? :'" do
45
45
  content = <<-EOF
46
46
  class PostsController < ApplicationController
47
47
  def edit
@@ -56,7 +56,7 @@ module RailsBestPractices
56
56
  expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:5 - use scope access')
57
57
  end
58
58
 
59
- it 'should use scope access by comparing with id' do
59
+ it 'uses scope access by comparing with id' do
60
60
  content = <<-EOF
61
61
  class PostsController < ApplicationController
62
62
  def edit
@@ -74,7 +74,7 @@ module RailsBestPractices
74
74
  expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:5 - use scope access')
75
75
  end
76
76
 
77
- it 'should use scope access with current_user ==' do
77
+ it 'uses scope access with current_user ==' do
78
78
  content = <<-EOF
79
79
  class PostsController < ApplicationController
80
80
  def edit
@@ -92,7 +92,7 @@ module RailsBestPractices
92
92
  expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:5 - use scope access')
93
93
  end
94
94
 
95
- it 'should use scope access by current_user.id ==' do
95
+ it 'uses scope access by current_user.id ==' do
96
96
  content = <<-EOF
97
97
  class PostsController < ApplicationController
98
98
  def edit
@@ -112,7 +112,7 @@ module RailsBestPractices
112
112
  end
113
113
 
114
114
  context 'unless' do
115
- it 'should use scope access' do
115
+ it 'uses scope access' do
116
116
  content = <<-EOF
117
117
  class PostsController < ApplicationController
118
118
  def edit
@@ -130,7 +130,7 @@ module RailsBestPractices
130
130
  expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:5 - use scope access')
131
131
  end
132
132
 
133
- it 'should use scope access by comparing with id' do
133
+ it 'uses scope access by comparing with id' do
134
134
  content = <<-EOF
135
135
  class PostsController < ApplicationController
136
136
  def edit
@@ -148,7 +148,7 @@ module RailsBestPractices
148
148
  expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:5 - use scope access')
149
149
  end
150
150
 
151
- it 'should use scope access with current_user ==' do
151
+ it 'uses scope access with current_user ==' do
152
152
  content = <<-EOF
153
153
  class PostsController < ApplicationController
154
154
  def edit
@@ -166,7 +166,7 @@ module RailsBestPractices
166
166
  expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:5 - use scope access')
167
167
  end
168
168
 
169
- it 'should use scope access by current_user.id ==' do
169
+ it 'uses scope access by current_user.id ==' do
170
170
  content = <<-EOF
171
171
  class PostsController < ApplicationController
172
172
  def edit
@@ -184,7 +184,7 @@ module RailsBestPractices
184
184
  expect(runner.errors[0].to_s).to eq('app/controllers/posts_controller.rb:5 - use scope access')
185
185
  end
186
186
 
187
- it 'should no error in use_scope_access_review' do
187
+ it 'noes error in use_scope_access_review' do
188
188
  content = <<-EOF
189
189
  class CommentsController < ApplicationController
190
190
  def add_comment
@@ -206,8 +206,8 @@ module RailsBestPractices
206
206
  expect(runner.errors.size).to eq(0)
207
207
  end
208
208
 
209
- it 'should not check ignored files' do
210
- runner = Core::Runner.new(reviews: UseScopeAccessReview.new(ignored_files: /posts_controller/))
209
+ it 'does not check ignored files' do
210
+ runner = Core::Runner.new(reviews: described_class.new(ignored_files: /posts_controller/))
211
211
  content = <<-EOF
212
212
  class PostsController < ApplicationController
213
213
  def edit
@@ -5,9 +5,9 @@ require 'spec_helper'
5
5
  module RailsBestPractices
6
6
  module Reviews
7
7
  describe UseTurboSprocketsRails3Review do
8
- let(:runner) { Core::Runner.new(prepares: Prepares::GemfilePrepare.new, reviews: UseTurboSprocketsRails3Review.new) }
8
+ let(:runner) { Core::Runner.new(prepares: Prepares::GemfilePrepare.new, reviews: described_class.new) }
9
9
 
10
- it 'should use turbo-sprockets-rails3' do
10
+ it 'uses turbo-sprockets-rails3' do
11
11
  content = <<~EOF
12
12
  GEM
13
13
  remote: https://rubygems.org
@@ -32,7 +32,7 @@ module RailsBestPractices
32
32
  expect(runner.errors[0].to_s).to eq('Capfile:2 - speed up assets precompile with turbo-sprockets-rails3')
33
33
  end
34
34
 
35
- it 'should not use turbo-sprockets-rails3 with turbo-sprockets-rails3 gem' do
35
+ it 'does not use turbo-sprockets-rails3 with turbo-sprockets-rails3 gem' do
36
36
  content = <<~EOF
37
37
  GEM
38
38
  remote: https://rubygems.org
@@ -59,7 +59,7 @@ module RailsBestPractices
59
59
  expect(runner.errors.size).to eq(0)
60
60
  end
61
61
 
62
- it 'should not use turbo-sprockets-rails3 without deploy/assets' do
62
+ it 'does not use turbo-sprockets-rails3 without deploy/assets' do
63
63
  content = <<-EOF
64
64
  load 'deploy' if respond_to?(:namespace)
65
65
  #load 'deploy/assets'
@@ -69,7 +69,7 @@ module RailsBestPractices
69
69
  expect(runner.errors.size).to eq(0)
70
70
  end
71
71
 
72
- it 'should not use turbo-sprockets-rails3 with rails4 gem' do
72
+ it 'does not use turbo-sprockets-rails3 with rails4 gem' do
73
73
  content = <<~EOF
74
74
  GEM
75
75
  remote: https://rubygems.org
@@ -93,9 +93,11 @@ module RailsBestPractices
93
93
  expect(runner.errors.size).to eq(0)
94
94
  end
95
95
 
96
- it 'should not check ignored files' do
97
- runner = Core::Runner.new(prepares: Prepares::GemfilePrepare.new,
98
- reviews: UseTurboSprocketsRails3Review.new(ignored_files: /Capfile/))
96
+ it 'does not check ignored files' do
97
+ runner =
98
+ Core::Runner.new(
99
+ prepares: Prepares::GemfilePrepare.new, reviews: described_class.new(ignored_files: /Capfile/)
100
+ )
99
101
  content = <<~EOF
100
102
  GEM
101
103
  remote: https://rubygems.org
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_best_practices
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.19.5
4
+ version: 1.22.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-28 00:00:00.000000000 Z
11
+ date: 2021-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.5.1
33
+ version: 0.5.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 0.5.1
40
+ version: 0.5.2
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: erubis
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -154,16 +154,16 @@ dependencies:
154
154
  name: rake
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "<"
157
+ - - ">="
158
158
  - !ruby/object:Gem::Version
159
- version: '11.0'
159
+ version: '0'
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - "<"
164
+ - - ">="
165
165
  - !ruby/object:Gem::Version
166
- version: '11.0'
166
+ version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: rspec
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -235,6 +235,9 @@ files:
235
235
  - lib/rails_best_practices/core/routes.rb
236
236
  - lib/rails_best_practices/core/runner.rb
237
237
  - lib/rails_best_practices/core_ext/erubis.rb
238
+ - lib/rails_best_practices/inline_disables.rb
239
+ - lib/rails_best_practices/inline_disables/comment_ripper.rb
240
+ - lib/rails_best_practices/inline_disables/inline_disable.rb
238
241
  - lib/rails_best_practices/lexicals.rb
239
242
  - lib/rails_best_practices/lexicals/long_line_check.rb
240
243
  - lib/rails_best_practices/lexicals/remove_tab_check.rb
@@ -314,6 +317,7 @@ files:
314
317
  - spec/rails_best_practices/core/routes_spec.rb
315
318
  - spec/rails_best_practices/core/runner_spec.rb
316
319
  - spec/rails_best_practices/core_ext/erubis_spec.rb
320
+ - spec/rails_best_practices/inline_disables/inline_disable_spec.rb
317
321
  - spec/rails_best_practices/lexicals/long_line_check_spec.rb
318
322
  - spec/rails_best_practices/lexicals/remove_tab_check_spec.rb
319
323
  - spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb
@@ -399,8 +403,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
399
403
  - !ruby/object:Gem::Version
400
404
  version: 1.3.6
401
405
  requirements: []
402
- rubygems_version: 3.0.3
403
- signing_key:
406
+ rubygems_version: 3.2.22
407
+ signing_key:
404
408
  specification_version: 4
405
409
  summary: a code metric tool for rails codes.
406
410
  test_files:
@@ -424,6 +428,7 @@ test_files:
424
428
  - spec/rails_best_practices/core/routes_spec.rb
425
429
  - spec/rails_best_practices/core/runner_spec.rb
426
430
  - spec/rails_best_practices/core_ext/erubis_spec.rb
431
+ - spec/rails_best_practices/inline_disables/inline_disable_spec.rb
427
432
  - spec/rails_best_practices/lexicals/long_line_check_spec.rb
428
433
  - spec/rails_best_practices/lexicals/remove_tab_check_spec.rb
429
434
  - spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb