rails_best_practices 1.20.0 → 1.22.1

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 (140) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/Gemfile +2 -1
  4. data/Gemfile.lock +49 -43
  5. data/Guardfile +2 -0
  6. data/Rakefile +2 -0
  7. data/assets/result.html.erb +2 -0
  8. data/lib/rails_best_practices/analyzer.rb +59 -48
  9. data/lib/rails_best_practices/core/check.rb +39 -32
  10. data/lib/rails_best_practices/core/checks_loader.rb +8 -6
  11. data/lib/rails_best_practices/core/configs.rb +1 -2
  12. data/lib/rails_best_practices/core/controllers.rb +1 -2
  13. data/lib/rails_best_practices/core/error.rb +1 -1
  14. data/lib/rails_best_practices/core/helpers.rb +1 -2
  15. data/lib/rails_best_practices/core/mailers.rb +1 -2
  16. data/lib/rails_best_practices/core/methods.rb +21 -16
  17. data/lib/rails_best_practices/core/model_associations.rb +9 -4
  18. data/lib/rails_best_practices/core/models.rb +1 -2
  19. data/lib/rails_best_practices/core/modules.rb +1 -1
  20. data/lib/rails_best_practices/core/routes.rb +2 -2
  21. data/lib/rails_best_practices/core/runner.rb +49 -34
  22. data/lib/rails_best_practices/inline_disables/comment_ripper.rb +19 -0
  23. data/lib/rails_best_practices/inline_disables/inline_disable.rb +50 -0
  24. data/lib/rails_best_practices/inline_disables.rb +3 -0
  25. data/lib/rails_best_practices/lexicals/long_line_check.rb +7 -3
  26. data/lib/rails_best_practices/option_parser.rb +22 -6
  27. data/lib/rails_best_practices/prepares/controller_prepare.rb +15 -3
  28. data/lib/rails_best_practices/prepares/gemfile_prepare.rb +1 -1
  29. data/lib/rails_best_practices/prepares/helper_prepare.rb +6 -1
  30. data/lib/rails_best_practices/prepares/initializer_prepare.rb +2 -2
  31. data/lib/rails_best_practices/prepares/mailer_prepare.rb +1 -0
  32. data/lib/rails_best_practices/prepares/model_prepare.rb +52 -12
  33. data/lib/rails_best_practices/prepares/route_prepare.rb +16 -10
  34. data/lib/rails_best_practices/prepares.rb +1 -1
  35. data/lib/rails_best_practices/reviews/add_model_virtual_attribute_review.rb +15 -13
  36. data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +34 -29
  37. data/lib/rails_best_practices/reviews/check_destroy_return_value_review.rb +14 -5
  38. data/lib/rails_best_practices/reviews/check_save_return_value_review.rb +19 -8
  39. data/lib/rails_best_practices/reviews/hash_syntax_review.rb +5 -5
  40. data/lib/rails_best_practices/reviews/isolate_seed_data_review.rb +4 -4
  41. data/lib/rails_best_practices/reviews/keep_finders_on_their_own_model_review.rb +7 -8
  42. data/lib/rails_best_practices/reviews/law_of_demeter_review.rb +6 -6
  43. data/lib/rails_best_practices/reviews/move_code_into_controller_review.rb +1 -1
  44. data/lib/rails_best_practices/reviews/move_code_into_helper_review.rb +6 -7
  45. data/lib/rails_best_practices/reviews/move_finder_to_named_scope_review.rb +7 -8
  46. data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +12 -10
  47. data/lib/rails_best_practices/reviews/not_use_default_route_review.rb +1 -2
  48. data/lib/rails_best_practices/reviews/overuse_route_customizations_review.rb +5 -5
  49. data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +5 -2
  50. data/lib/rails_best_practices/reviews/remove_unused_methods_in_controllers_review.rb +6 -3
  51. data/lib/rails_best_practices/reviews/remove_unused_methods_in_helpers_review.rb +6 -4
  52. data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +29 -9
  53. data/lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb +3 -3
  54. data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +17 -15
  55. data/lib/rails_best_practices/reviews/simplify_render_in_controllers_review.rb +1 -2
  56. data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +3 -3
  57. data/lib/rails_best_practices/reviews/use_before_filter_review.rb +2 -1
  58. data/lib/rails_best_practices/reviews/use_model_association_review.rb +5 -5
  59. data/lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb +9 -8
  60. data/lib/rails_best_practices/reviews/use_observer_review.rb +9 -9
  61. data/lib/rails_best_practices/reviews/use_query_attribute_review.rb +26 -26
  62. data/lib/rails_best_practices/reviews/use_say_with_time_in_migrations_review.rb +8 -7
  63. data/lib/rails_best_practices/reviews/use_scope_access_review.rb +17 -15
  64. data/lib/rails_best_practices/reviews/use_turbo_sprockets_rails3_review.rb +2 -1
  65. data/lib/rails_best_practices/version.rb +1 -1
  66. data/lib/rails_best_practices.rb +2 -2
  67. data/rails_best_practices.gemspec +39 -38
  68. data/spec/fixtures/lib/rails_best_practices/plugins/reviews/not_use_rails_root_review.rb +1 -2
  69. data/spec/rails_best_practices/analyzer_spec.rb +73 -42
  70. data/spec/rails_best_practices/core/check_spec.rb +5 -5
  71. data/spec/rails_best_practices/core/checks_loader_spec.rb +3 -3
  72. data/spec/rails_best_practices/core/configs_spec.rb +1 -1
  73. data/spec/rails_best_practices/core/controllers_spec.rb +1 -1
  74. data/spec/rails_best_practices/core/error_spec.rb +21 -21
  75. data/spec/rails_best_practices/core/except_methods_spec.rb +7 -7
  76. data/spec/rails_best_practices/core/gems_spec.rb +4 -4
  77. data/spec/rails_best_practices/core/helpers_spec.rb +1 -1
  78. data/spec/rails_best_practices/core/klasses_spec.rb +3 -3
  79. data/spec/rails_best_practices/core/mailers_spec.rb +1 -1
  80. data/spec/rails_best_practices/core/methods_spec.rb +6 -6
  81. data/spec/rails_best_practices/core/model_associations_spec.rb +10 -6
  82. data/spec/rails_best_practices/core/model_attributes_spec.rb +4 -4
  83. data/spec/rails_best_practices/core/models_spec.rb +1 -1
  84. data/spec/rails_best_practices/core/modules_spec.rb +5 -5
  85. data/spec/rails_best_practices/core/routes_spec.rb +5 -5
  86. data/spec/rails_best_practices/core/runner_spec.rb +9 -7
  87. data/spec/rails_best_practices/core_ext/erubis_spec.rb +10 -10
  88. data/spec/rails_best_practices/inline_disables/inline_disable_spec.rb +62 -0
  89. data/spec/rails_best_practices/lexicals/long_line_check_spec.rb +11 -10
  90. data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +6 -6
  91. data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +6 -6
  92. data/spec/rails_best_practices/prepares/config_prepare_spec.rb +2 -2
  93. data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +18 -10
  94. data/spec/rails_best_practices/prepares/gemfile_prepare_spec.rb +2 -2
  95. data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +3 -3
  96. data/spec/rails_best_practices/prepares/initializer_prepare_spec.rb +3 -3
  97. data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +2 -2
  98. data/spec/rails_best_practices/prepares/model_prepare_spec.rb +79 -43
  99. data/spec/rails_best_practices/prepares/route_prepare_spec.rb +138 -77
  100. data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +2 -2
  101. data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +18 -12
  102. data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +28 -22
  103. data/spec/rails_best_practices/reviews/check_destroy_return_value_review_spec.rb +15 -13
  104. data/spec/rails_best_practices/reviews/check_save_return_value_review_spec.rb +31 -21
  105. data/spec/rails_best_practices/reviews/default_scope_is_evil_review_spec.rb +6 -6
  106. data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +5 -5
  107. data/spec/rails_best_practices/reviews/hash_syntax_review_spec.rb +9 -9
  108. data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +7 -7
  109. data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +9 -9
  110. data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +21 -14
  111. data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +6 -6
  112. data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +11 -6
  113. data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +26 -16
  114. data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +7 -7
  115. data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +9 -7
  116. data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +9 -9
  117. data/spec/rails_best_practices/reviews/not_rescue_exception_review_spec.rb +9 -9
  118. data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +5 -5
  119. data/spec/rails_best_practices/reviews/not_use_time_ago_in_words_review_spec.rb +7 -7
  120. data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +7 -7
  121. data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +24 -19
  122. data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +6 -6
  123. data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +44 -31
  124. data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +17 -12
  125. data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +46 -44
  126. data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +10 -8
  127. data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +16 -10
  128. data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +54 -31
  129. data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +9 -9
  130. data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +13 -13
  131. data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +11 -9
  132. data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +7 -7
  133. data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +21 -17
  134. data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +6 -6
  135. data/spec/rails_best_practices/reviews/use_parentheses_in_method_def_review_spec.rb +9 -7
  136. data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +31 -24
  137. data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +15 -11
  138. data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +14 -14
  139. data/spec/rails_best_practices/reviews/use_turbo_sprockets_rails3_review_spec.rb +10 -8
  140. metadata +12 -7
@@ -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.20.0
4
+ version: 1.22.1
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: 2020-02-29 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
@@ -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.1.0.pre1
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