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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +49 -43
- data/Guardfile +2 -0
- data/Rakefile +2 -0
- data/assets/result.html.erb +2 -0
- data/lib/rails_best_practices/analyzer.rb +59 -48
- data/lib/rails_best_practices/core/check.rb +39 -32
- data/lib/rails_best_practices/core/checks_loader.rb +8 -6
- data/lib/rails_best_practices/core/configs.rb +1 -2
- data/lib/rails_best_practices/core/controllers.rb +1 -2
- data/lib/rails_best_practices/core/error.rb +1 -1
- data/lib/rails_best_practices/core/helpers.rb +1 -2
- data/lib/rails_best_practices/core/mailers.rb +1 -2
- data/lib/rails_best_practices/core/methods.rb +21 -16
- data/lib/rails_best_practices/core/model_associations.rb +9 -4
- data/lib/rails_best_practices/core/models.rb +1 -2
- data/lib/rails_best_practices/core/modules.rb +1 -1
- data/lib/rails_best_practices/core/routes.rb +2 -2
- data/lib/rails_best_practices/core/runner.rb +49 -34
- data/lib/rails_best_practices/inline_disables/comment_ripper.rb +19 -0
- data/lib/rails_best_practices/inline_disables/inline_disable.rb +50 -0
- data/lib/rails_best_practices/inline_disables.rb +3 -0
- data/lib/rails_best_practices/lexicals/long_line_check.rb +7 -3
- data/lib/rails_best_practices/option_parser.rb +22 -6
- data/lib/rails_best_practices/prepares/controller_prepare.rb +15 -3
- data/lib/rails_best_practices/prepares/gemfile_prepare.rb +1 -1
- data/lib/rails_best_practices/prepares/helper_prepare.rb +6 -1
- data/lib/rails_best_practices/prepares/initializer_prepare.rb +2 -2
- data/lib/rails_best_practices/prepares/mailer_prepare.rb +1 -0
- data/lib/rails_best_practices/prepares/model_prepare.rb +52 -12
- data/lib/rails_best_practices/prepares/route_prepare.rb +16 -10
- data/lib/rails_best_practices/prepares.rb +1 -1
- data/lib/rails_best_practices/reviews/add_model_virtual_attribute_review.rb +15 -13
- data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +34 -29
- data/lib/rails_best_practices/reviews/check_destroy_return_value_review.rb +14 -5
- data/lib/rails_best_practices/reviews/check_save_return_value_review.rb +19 -8
- data/lib/rails_best_practices/reviews/hash_syntax_review.rb +5 -5
- data/lib/rails_best_practices/reviews/isolate_seed_data_review.rb +4 -4
- data/lib/rails_best_practices/reviews/keep_finders_on_their_own_model_review.rb +7 -8
- data/lib/rails_best_practices/reviews/law_of_demeter_review.rb +6 -6
- data/lib/rails_best_practices/reviews/move_code_into_controller_review.rb +1 -1
- data/lib/rails_best_practices/reviews/move_code_into_helper_review.rb +6 -7
- data/lib/rails_best_practices/reviews/move_finder_to_named_scope_review.rb +7 -8
- data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +12 -10
- data/lib/rails_best_practices/reviews/not_use_default_route_review.rb +1 -2
- data/lib/rails_best_practices/reviews/overuse_route_customizations_review.rb +5 -5
- data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +5 -2
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_controllers_review.rb +6 -3
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_helpers_review.rb +6 -4
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +29 -9
- data/lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb +3 -3
- data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +17 -15
- data/lib/rails_best_practices/reviews/simplify_render_in_controllers_review.rb +1 -2
- data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +3 -3
- data/lib/rails_best_practices/reviews/use_before_filter_review.rb +2 -1
- data/lib/rails_best_practices/reviews/use_model_association_review.rb +5 -5
- data/lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb +9 -8
- data/lib/rails_best_practices/reviews/use_observer_review.rb +9 -9
- data/lib/rails_best_practices/reviews/use_query_attribute_review.rb +26 -26
- data/lib/rails_best_practices/reviews/use_say_with_time_in_migrations_review.rb +8 -7
- data/lib/rails_best_practices/reviews/use_scope_access_review.rb +17 -15
- data/lib/rails_best_practices/reviews/use_turbo_sprockets_rails3_review.rb +2 -1
- data/lib/rails_best_practices/version.rb +1 -1
- data/lib/rails_best_practices.rb +2 -2
- data/rails_best_practices.gemspec +39 -38
- data/spec/fixtures/lib/rails_best_practices/plugins/reviews/not_use_rails_root_review.rb +1 -2
- data/spec/rails_best_practices/analyzer_spec.rb +73 -42
- data/spec/rails_best_practices/core/check_spec.rb +5 -5
- data/spec/rails_best_practices/core/checks_loader_spec.rb +3 -3
- data/spec/rails_best_practices/core/configs_spec.rb +1 -1
- data/spec/rails_best_practices/core/controllers_spec.rb +1 -1
- data/spec/rails_best_practices/core/error_spec.rb +21 -21
- data/spec/rails_best_practices/core/except_methods_spec.rb +7 -7
- data/spec/rails_best_practices/core/gems_spec.rb +4 -4
- data/spec/rails_best_practices/core/helpers_spec.rb +1 -1
- data/spec/rails_best_practices/core/klasses_spec.rb +3 -3
- data/spec/rails_best_practices/core/mailers_spec.rb +1 -1
- data/spec/rails_best_practices/core/methods_spec.rb +6 -6
- data/spec/rails_best_practices/core/model_associations_spec.rb +10 -6
- data/spec/rails_best_practices/core/model_attributes_spec.rb +4 -4
- data/spec/rails_best_practices/core/models_spec.rb +1 -1
- data/spec/rails_best_practices/core/modules_spec.rb +5 -5
- data/spec/rails_best_practices/core/routes_spec.rb +5 -5
- data/spec/rails_best_practices/core/runner_spec.rb +9 -7
- data/spec/rails_best_practices/core_ext/erubis_spec.rb +10 -10
- data/spec/rails_best_practices/inline_disables/inline_disable_spec.rb +62 -0
- data/spec/rails_best_practices/lexicals/long_line_check_spec.rb +11 -10
- data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +6 -6
- data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +6 -6
- data/spec/rails_best_practices/prepares/config_prepare_spec.rb +2 -2
- data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +18 -10
- data/spec/rails_best_practices/prepares/gemfile_prepare_spec.rb +2 -2
- data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +3 -3
- data/spec/rails_best_practices/prepares/initializer_prepare_spec.rb +3 -3
- data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +2 -2
- data/spec/rails_best_practices/prepares/model_prepare_spec.rb +79 -43
- data/spec/rails_best_practices/prepares/route_prepare_spec.rb +138 -77
- data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +2 -2
- data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +18 -12
- data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +28 -22
- data/spec/rails_best_practices/reviews/check_destroy_return_value_review_spec.rb +15 -13
- data/spec/rails_best_practices/reviews/check_save_return_value_review_spec.rb +31 -21
- data/spec/rails_best_practices/reviews/default_scope_is_evil_review_spec.rb +6 -6
- data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +5 -5
- data/spec/rails_best_practices/reviews/hash_syntax_review_spec.rb +9 -9
- data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +7 -7
- data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +9 -9
- data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +21 -14
- data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +6 -6
- data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +11 -6
- data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +26 -16
- data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +7 -7
- data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +9 -7
- data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +9 -9
- data/spec/rails_best_practices/reviews/not_rescue_exception_review_spec.rb +9 -9
- data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +5 -5
- data/spec/rails_best_practices/reviews/not_use_time_ago_in_words_review_spec.rb +7 -7
- data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +7 -7
- data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +24 -19
- data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +6 -6
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +44 -31
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +17 -12
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +46 -44
- data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +10 -8
- data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +16 -10
- data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +54 -31
- data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +9 -9
- data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +13 -13
- data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +11 -9
- data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +7 -7
- data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +21 -17
- data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +6 -6
- data/spec/rails_best_practices/reviews/use_parentheses_in_method_def_review_spec.rb +9 -7
- data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +31 -24
- data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +15 -11
- data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +14 -14
- data/spec/rails_best_practices/reviews/use_turbo_sprockets_rails3_review_spec.rb +10 -8
- metadata +12 -7
@@ -5,10 +5,10 @@ require 'spec_helper'
|
|
5
5
|
module RailsBestPractices
|
6
6
|
module Reviews
|
7
7
|
describe NotUseTimeAgoInWordsReview do
|
8
|
-
let(:runner) { Core::Runner.new(reviews:
|
8
|
+
let(:runner) { Core::Runner.new(reviews: described_class.new) }
|
9
9
|
|
10
10
|
describe 'time_ago_in_words' do
|
11
|
-
it '
|
11
|
+
it 'does not use in views' do
|
12
12
|
content = <<-EOF
|
13
13
|
<%= time_ago_in_words(post.created_at) %>
|
14
14
|
EOF
|
@@ -17,7 +17,7 @@ module RailsBestPractices
|
|
17
17
|
expect(runner.errors[0].to_s).to eq('app/views/posts/show.html.erb:1 - not use time_ago_in_words')
|
18
18
|
end
|
19
19
|
|
20
|
-
it '
|
20
|
+
it 'does not use in helpers' do
|
21
21
|
content = <<-EOF
|
22
22
|
def timeago
|
23
23
|
content_tag(:p, time_ago_in_words(post.created_at))
|
@@ -30,7 +30,7 @@ module RailsBestPractices
|
|
30
30
|
end
|
31
31
|
|
32
32
|
describe 'distance_of_time_in_words_to_now' do
|
33
|
-
it '
|
33
|
+
it 'does not use in views' do
|
34
34
|
content = <<-EOF
|
35
35
|
<%= distance_of_time_in_words_to_now(post.created_at) %>
|
36
36
|
EOF
|
@@ -39,7 +39,7 @@ module RailsBestPractices
|
|
39
39
|
expect(runner.errors[0].to_s).to eq('app/views/posts/show.html.erb:1 - not use time_ago_in_words')
|
40
40
|
end
|
41
41
|
|
42
|
-
it '
|
42
|
+
it 'does not use in helpers' do
|
43
43
|
content = <<-EOF
|
44
44
|
def timeago
|
45
45
|
content_tag(:p, distance_of_time_in_words_to_now(post.created_at))
|
@@ -51,8 +51,8 @@ module RailsBestPractices
|
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
|
-
it '
|
55
|
-
runner = Core::Runner.new(reviews:
|
54
|
+
it 'does not check ignored files' do
|
55
|
+
runner = Core::Runner.new(reviews: described_class.new(ignored_files: /posts_helper/))
|
56
56
|
content = <<-EOF
|
57
57
|
def timeago
|
58
58
|
content_tag(:p, time_ago_in_words(post.created_at))
|
@@ -5,9 +5,9 @@ require 'spec_helper'
|
|
5
5
|
module RailsBestPractices
|
6
6
|
module Reviews
|
7
7
|
describe OveruseRouteCustomizationsReview do
|
8
|
-
let(:runner) { Core::Runner.new(reviews:
|
8
|
+
let(:runner) { Core::Runner.new(reviews: described_class.new) }
|
9
9
|
|
10
|
-
it '
|
10
|
+
it 'overuses route customizations' do
|
11
11
|
content = <<-EOF
|
12
12
|
RailsBestpracticesCom::Application.routes.draw do
|
13
13
|
resources :posts do
|
@@ -28,7 +28,7 @@ module RailsBestPractices
|
|
28
28
|
expect(runner.errors[0].to_s).to eq('config/routes.rb:2 - overuse route customizations (customize_count > 3)')
|
29
29
|
end
|
30
30
|
|
31
|
-
it '
|
31
|
+
it 'overuses route customizations another way' do
|
32
32
|
content = <<-EOF
|
33
33
|
RailsBestpracticesCom::Application.routes.draw do
|
34
34
|
resources :posts do
|
@@ -44,7 +44,7 @@ module RailsBestPractices
|
|
44
44
|
expect(runner.errors[0].to_s).to eq('config/routes.rb:2 - overuse route customizations (customize_count > 3)')
|
45
45
|
end
|
46
46
|
|
47
|
-
it '
|
47
|
+
it 'does not overuse route customizations without customization' do
|
48
48
|
content = <<-EOF
|
49
49
|
RailsBestpracticesCom::Application.routes.draw do
|
50
50
|
resources :posts
|
@@ -54,7 +54,7 @@ module RailsBestPractices
|
|
54
54
|
expect(runner.errors.size).to eq(0)
|
55
55
|
end
|
56
56
|
|
57
|
-
it '
|
57
|
+
it 'does not overuse route customizations when customize route is only one' do
|
58
58
|
content = <<-EOF
|
59
59
|
RailsBestpracticesCom::Application.routes.draw do
|
60
60
|
resources :posts do
|
@@ -68,8 +68,8 @@ module RailsBestPractices
|
|
68
68
|
expect(runner.errors.size).to eq(0)
|
69
69
|
end
|
70
70
|
|
71
|
-
it '
|
72
|
-
runner = Core::Runner.new(reviews:
|
71
|
+
it 'does not check ignored files' do
|
72
|
+
runner = Core::Runner.new(reviews: described_class.new(ignored_files: %r{config/routes\.rb}))
|
73
73
|
content = <<-EOF
|
74
74
|
ActionController::Routing::Routes.draw do |map|
|
75
75
|
map.resources :posts, member: { comments: :get,
|
@@ -5,12 +5,14 @@ require 'spec_helper'
|
|
5
5
|
module RailsBestPractices
|
6
6
|
module Reviews
|
7
7
|
describe ProtectMassAssignmentReview do
|
8
|
-
let(:runner)
|
9
|
-
Core::Runner.new(
|
10
|
-
|
11
|
-
|
8
|
+
let(:runner) do
|
9
|
+
Core::Runner.new(
|
10
|
+
prepares: [Prepares::GemfilePrepare.new, Prepares::ConfigPrepare.new, Prepares::InitializerPrepare.new],
|
11
|
+
reviews: described_class.new
|
12
|
+
)
|
13
|
+
end
|
12
14
|
|
13
|
-
it '
|
15
|
+
it 'protects mass assignment' do
|
14
16
|
content = <<-EOF
|
15
17
|
class User < ActiveRecord::Base
|
16
18
|
end
|
@@ -20,7 +22,7 @@ module RailsBestPractices
|
|
20
22
|
expect(runner.errors[0].to_s).to eq('app/models/user.rb:1 - protect mass assignment')
|
21
23
|
end
|
22
24
|
|
23
|
-
it '
|
25
|
+
it 'does not protect mass assignment if attr_accessible is used with arguments and user set config.active_record.whitelist_attributes' do
|
24
26
|
content = <<-EOF
|
25
27
|
module RailsBestPracticesCom
|
26
28
|
class Application < Rails::Application
|
@@ -38,7 +40,7 @@ module RailsBestPractices
|
|
38
40
|
expect(runner.errors.size).to eq(0)
|
39
41
|
end
|
40
42
|
|
41
|
-
it '
|
43
|
+
it 'does not protect mass assignment if attr_accessible is used without arguments and user set config.active_record.whitelist_attributes' do
|
42
44
|
content = <<-EOF
|
43
45
|
module RailsBestPracticesCom
|
44
46
|
class Application < Rails::Application
|
@@ -56,7 +58,7 @@ module RailsBestPractices
|
|
56
58
|
expect(runner.errors.size).to eq(0)
|
57
59
|
end
|
58
60
|
|
59
|
-
it '
|
61
|
+
it 'does not protect mass assignment with attr_protected if user set config.active_record.whitelist_attributes' do
|
60
62
|
content = <<-EOF
|
61
63
|
module RailsBestPracticesCom
|
62
64
|
class Application < Rails::Application
|
@@ -74,7 +76,7 @@ module RailsBestPractices
|
|
74
76
|
expect(runner.errors.size).to eq(0)
|
75
77
|
end
|
76
78
|
|
77
|
-
it '
|
79
|
+
it 'does not protect mass assignment if using devise' do
|
78
80
|
content = <<-EOF
|
79
81
|
class User < ActiveRecord::Base
|
80
82
|
devise :database_authenticatable, :registerable, :confirmable, :recoverable, stretches: 20
|
@@ -84,7 +86,7 @@ module RailsBestPractices
|
|
84
86
|
expect(runner.errors.size).to eq(0)
|
85
87
|
end
|
86
88
|
|
87
|
-
it '
|
89
|
+
it 'does not protect mass assignment if using authlogic with configuration' do
|
88
90
|
content = <<-EOF
|
89
91
|
class User < ActiveRecord::Base
|
90
92
|
acts_as_authentic do |c|
|
@@ -96,7 +98,7 @@ module RailsBestPractices
|
|
96
98
|
expect(runner.errors.size).to eq(0)
|
97
99
|
end
|
98
100
|
|
99
|
-
it '
|
101
|
+
it 'does not protect mass assignment if using authlogic without configuration' do
|
100
102
|
content = <<-EOF
|
101
103
|
class User < ActiveRecord::Base
|
102
104
|
acts_as_authentic
|
@@ -106,7 +108,7 @@ module RailsBestPractices
|
|
106
108
|
expect(runner.errors.size).to eq(0)
|
107
109
|
end
|
108
110
|
|
109
|
-
it '
|
111
|
+
it 'does not protect mass assignment if checking non ActiveRecord::Base inherited model' do
|
110
112
|
content = <<-EOF
|
111
113
|
class User < Person
|
112
114
|
end
|
@@ -116,7 +118,7 @@ module RailsBestPractices
|
|
116
118
|
end
|
117
119
|
|
118
120
|
context 'strong_parameters' do
|
119
|
-
it '
|
121
|
+
it 'does not protect mass assignment for strong_parameters' do
|
120
122
|
content = <<-EOF
|
121
123
|
class User < ActiveRecord::Base
|
122
124
|
include ActiveModel::ForbiddenAttributesProtection
|
@@ -126,7 +128,7 @@ module RailsBestPractices
|
|
126
128
|
expect(runner.errors.size).to eq(0)
|
127
129
|
end
|
128
130
|
|
129
|
-
it '
|
131
|
+
it 'does not protect mass assignment for strong_parameters' do
|
130
132
|
content = <<-EOF
|
131
133
|
class AR
|
132
134
|
ActiveRecord::Base.send(:include, ActiveModel::ForbiddenAttributesProtection)
|
@@ -143,7 +145,7 @@ module RailsBestPractices
|
|
143
145
|
end
|
144
146
|
|
145
147
|
context 'activerecord 4' do
|
146
|
-
it '
|
148
|
+
it 'does not protect mass assignment for activerecord 4' do
|
147
149
|
content = <<-EOF
|
148
150
|
GEM
|
149
151
|
remote: https://rubygems.org
|
@@ -159,7 +161,7 @@ module RailsBestPractices
|
|
159
161
|
expect(runner.errors.size).to eq(0)
|
160
162
|
end
|
161
163
|
|
162
|
-
it '
|
164
|
+
it 'protects mass assignment for activerecord 3' do
|
163
165
|
content = <<-EOF
|
164
166
|
GEM
|
165
167
|
remote: https://rubygems.org
|
@@ -176,9 +178,12 @@ module RailsBestPractices
|
|
176
178
|
end
|
177
179
|
end
|
178
180
|
|
179
|
-
it '
|
180
|
-
runner =
|
181
|
-
|
181
|
+
it 'does not check ignored files' do
|
182
|
+
runner =
|
183
|
+
Core::Runner.new(
|
184
|
+
prepares: [Prepares::GemfilePrepare.new, Prepares::ConfigPrepare.new, Prepares::InitializerPrepare.new],
|
185
|
+
reviews: described_class.new(ignored_files: %r{app/models/user\.rb})
|
186
|
+
)
|
182
187
|
content = <<-EOF
|
183
188
|
class User < ActiveRecord::Base
|
184
189
|
end
|
@@ -5,9 +5,9 @@ require 'spec_helper'
|
|
5
5
|
module RailsBestPractices
|
6
6
|
module Reviews
|
7
7
|
describe RemoveEmptyHelpersReview do
|
8
|
-
let(:runner) { Core::Runner.new(reviews:
|
8
|
+
let(:runner) { Core::Runner.new(reviews: described_class.new) }
|
9
9
|
|
10
|
-
it '
|
10
|
+
it 'removes empty helpers' do
|
11
11
|
content = <<-EOF
|
12
12
|
module PostsHelper
|
13
13
|
end
|
@@ -17,7 +17,7 @@ module RailsBestPractices
|
|
17
17
|
expect(runner.errors[0].to_s).to eq('app/helpers/posts_helper.rb:1 - remove empty helpers')
|
18
18
|
end
|
19
19
|
|
20
|
-
it '
|
20
|
+
it 'does not remove empty helpers' do
|
21
21
|
content = <<-EOF
|
22
22
|
module PostsHelper
|
23
23
|
def post_link(post)
|
@@ -29,7 +29,7 @@ module RailsBestPractices
|
|
29
29
|
expect(runner.errors.size).to eq(0)
|
30
30
|
end
|
31
31
|
|
32
|
-
it '
|
32
|
+
it 'does not remove empty application_helper' do
|
33
33
|
content = <<-EOF
|
34
34
|
module ApplicationHelper
|
35
35
|
end
|
@@ -38,8 +38,8 @@ module RailsBestPractices
|
|
38
38
|
expect(runner.errors.size).to eq(0)
|
39
39
|
end
|
40
40
|
|
41
|
-
it '
|
42
|
-
runner = Core::Runner.new(reviews:
|
41
|
+
it 'does not check ignored files' do
|
42
|
+
runner = Core::Runner.new(reviews: described_class.new(ignored_files: /posts_helper/))
|
43
43
|
content = <<-EOF
|
44
44
|
module PostsHelper
|
45
45
|
end
|
@@ -5,15 +5,15 @@ require 'spec_helper'
|
|
5
5
|
module RailsBestPractices
|
6
6
|
module Reviews
|
7
7
|
describe RemoveUnusedMethodsInControllersReview do
|
8
|
-
let(:runner)
|
8
|
+
let(:runner) do
|
9
9
|
Core::Runner.new(
|
10
10
|
prepares: [Prepares::ControllerPrepare.new, Prepares::RoutePrepare.new],
|
11
|
-
reviews:
|
11
|
+
reviews: described_class.new('except_methods' => ['ExceptableController#*'])
|
12
12
|
)
|
13
|
-
|
13
|
+
end
|
14
14
|
|
15
15
|
context 'private/protected' do
|
16
|
-
it '
|
16
|
+
it 'removes unused methods' do
|
17
17
|
content = <<-EOF
|
18
18
|
RailsBestPracticesCom::Application.routes.draw do
|
19
19
|
resources :posts do
|
@@ -40,11 +40,15 @@ module RailsBestPractices
|
|
40
40
|
runner.review('app/controllers/posts_controller.rb', content)
|
41
41
|
runner.after_review
|
42
42
|
expect(runner.errors.size).to eq(2)
|
43
|
-
expect(runner.errors[0].to_s).to eq(
|
44
|
-
|
43
|
+
expect(runner.errors[0].to_s).to eq(
|
44
|
+
'app/controllers/posts_controller.rb:6 - remove unused methods (PostsController#load_post)'
|
45
|
+
)
|
46
|
+
expect(runner.errors[1].to_s).to eq(
|
47
|
+
'app/controllers/posts_controller.rb:8 - remove unused methods (PostsController#load_user)'
|
48
|
+
)
|
45
49
|
end
|
46
50
|
|
47
|
-
it '
|
51
|
+
it 'does not remove unused methods for before_filter' do
|
48
52
|
content = <<-EOF
|
49
53
|
RailsBestPracticesCom::Application.routes.draw do
|
50
54
|
resources :posts
|
@@ -66,7 +70,7 @@ module RailsBestPractices
|
|
66
70
|
expect(runner.errors.size).to eq(0)
|
67
71
|
end
|
68
72
|
|
69
|
-
it '
|
73
|
+
it 'does not remove unused methods for around_filter' do
|
70
74
|
content = <<-EOF
|
71
75
|
RailsBestPracticesCom::Application.routes.draw do
|
72
76
|
resources :posts
|
@@ -91,7 +95,7 @@ module RailsBestPractices
|
|
91
95
|
expect(runner.errors.size).to eq(0)
|
92
96
|
end
|
93
97
|
|
94
|
-
it '
|
98
|
+
it 'does not remove unused methods for around_action (new syntax)' do
|
95
99
|
content = <<-EOF
|
96
100
|
class PostsController < ActiveRecord::Base
|
97
101
|
around_action :use_time_zone
|
@@ -109,7 +113,7 @@ module RailsBestPractices
|
|
109
113
|
expect(runner.errors.size).to eq(0)
|
110
114
|
end
|
111
115
|
|
112
|
-
it '
|
116
|
+
it 'does not remove unused methods for layout' do
|
113
117
|
content = <<-EOF
|
114
118
|
RailsBestPracticesCom::Application.routes.draw do
|
115
119
|
resources :posts
|
@@ -131,7 +135,7 @@ module RailsBestPractices
|
|
131
135
|
expect(runner.errors.size).to eq(0)
|
132
136
|
end
|
133
137
|
|
134
|
-
it '
|
138
|
+
it 'does not remove inherited_resources methods' do
|
135
139
|
content = <<-EOF
|
136
140
|
RailsBestPracticesCom::Application.routes.draw do
|
137
141
|
resources :posts
|
@@ -155,7 +159,7 @@ module RailsBestPractices
|
|
155
159
|
end
|
156
160
|
|
157
161
|
context 'public' do
|
158
|
-
it '
|
162
|
+
it 'removes unused methods' do
|
159
163
|
content = <<-EOF
|
160
164
|
RailsBestPracticesCom::Application.routes.draw do
|
161
165
|
resources :posts
|
@@ -172,10 +176,12 @@ module RailsBestPractices
|
|
172
176
|
runner.review('app/controllers/posts_controller.rb', content)
|
173
177
|
runner.after_review
|
174
178
|
expect(runner.errors.size).to eq(1)
|
175
|
-
expect(runner.errors[0].to_s).to eq(
|
179
|
+
expect(runner.errors[0].to_s).to eq(
|
180
|
+
'app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#list)'
|
181
|
+
)
|
176
182
|
end
|
177
183
|
|
178
|
-
it '
|
184
|
+
it 'does not remove inline routes' do
|
179
185
|
content = <<-EOF
|
180
186
|
RailsBestPracticesCom::Application.routes.draw do
|
181
187
|
resources :posts, only: :none do
|
@@ -196,7 +202,7 @@ module RailsBestPractices
|
|
196
202
|
expect(runner.errors.size).to eq(0)
|
197
203
|
end
|
198
204
|
|
199
|
-
it '
|
205
|
+
it 'does not remove unused methods if all actions are used in route' do
|
200
206
|
content = <<-EOF
|
201
207
|
ActionController::Routing::Routes.draw do |map|
|
202
208
|
map.connect 'internal/:action/*whatever', controller: "internal"
|
@@ -216,7 +222,7 @@ module RailsBestPractices
|
|
216
222
|
expect(runner.errors.size).to eq(0)
|
217
223
|
end
|
218
224
|
|
219
|
-
it '
|
225
|
+
it 'does not remove unused methods if they are except_methods' do
|
220
226
|
content = <<-EOF
|
221
227
|
class ExceptableController < ApplicationController
|
222
228
|
def list; end
|
@@ -230,7 +236,7 @@ module RailsBestPractices
|
|
230
236
|
end
|
231
237
|
|
232
238
|
context 'assignment' do
|
233
|
-
it '
|
239
|
+
it 'does not remove unused methods if call in base class' do
|
234
240
|
content = <<-EOF
|
235
241
|
RailsBestPracticesCom::Application.routes.draw do
|
236
242
|
resources :user, only: :show do; end
|
@@ -259,7 +265,7 @@ module RailsBestPractices
|
|
259
265
|
end
|
260
266
|
|
261
267
|
context 'helper_method' do
|
262
|
-
it '
|
268
|
+
it 'removes unused methods if helper method is not called' do
|
263
269
|
content = <<-EOF
|
264
270
|
class PostsController < ApplicationController
|
265
271
|
helper_method :helper_post
|
@@ -271,10 +277,12 @@ module RailsBestPractices
|
|
271
277
|
runner.review('app/controllers/posts_controller.rb', content)
|
272
278
|
runner.after_review
|
273
279
|
expect(runner.errors.size).to eq(1)
|
274
|
-
expect(runner.errors[0].to_s).to eq(
|
280
|
+
expect(runner.errors[0].to_s).to eq(
|
281
|
+
'app/controllers/posts_controller.rb:4 - remove unused methods (PostsController#helper_post)'
|
282
|
+
)
|
275
283
|
end
|
276
284
|
|
277
|
-
it '
|
285
|
+
it 'does not remove unused methods if call helper method in views' do
|
278
286
|
content = <<-EOF
|
279
287
|
class PostsController < ApplicationController
|
280
288
|
helper_method :helper_post
|
@@ -292,7 +300,7 @@ module RailsBestPractices
|
|
292
300
|
expect(runner.errors.size).to eq(0)
|
293
301
|
end
|
294
302
|
|
295
|
-
it '
|
303
|
+
it 'does not remove unused methods if call helper method in helpers' do
|
296
304
|
content = <<-EOF
|
297
305
|
class PostsController < ApplicationController
|
298
306
|
helper_method :helper_post
|
@@ -316,7 +324,7 @@ module RailsBestPractices
|
|
316
324
|
end
|
317
325
|
|
318
326
|
context 'delegate to: :controller' do
|
319
|
-
it '
|
327
|
+
it 'removes unused methods if delegate method is not called' do
|
320
328
|
content = <<-EOF
|
321
329
|
class PostsController < ApplicationController
|
322
330
|
protected
|
@@ -333,10 +341,12 @@ module RailsBestPractices
|
|
333
341
|
runner.review('app/helpers/posts_helper.rb', content)
|
334
342
|
runner.after_review
|
335
343
|
expect(runner.errors.size).to eq(1)
|
336
|
-
expect(runner.errors[0].to_s).to eq(
|
344
|
+
expect(runner.errors[0].to_s).to eq(
|
345
|
+
'app/controllers/posts_controller.rb:3 - remove unused methods (PostsController#helper_post)'
|
346
|
+
)
|
337
347
|
end
|
338
348
|
|
339
|
-
it '
|
349
|
+
it 'removes unused methods if delegate method is called' do
|
340
350
|
content = <<-EOF
|
341
351
|
class PostsController < ApplicationController
|
342
352
|
protected
|
@@ -361,7 +371,7 @@ module RailsBestPractices
|
|
361
371
|
end
|
362
372
|
|
363
373
|
context 'cells' do
|
364
|
-
it '
|
374
|
+
it 'removes unused methods' do
|
365
375
|
content = <<-EOF
|
366
376
|
class PostsCell < Cell::Rails
|
367
377
|
def list; end
|
@@ -374,7 +384,7 @@ module RailsBestPractices
|
|
374
384
|
expect(runner.errors[0].to_s).to eq('app/cells/posts_cell.rb:2 - remove unused methods (PostsCell#list)')
|
375
385
|
end
|
376
386
|
|
377
|
-
it '
|
387
|
+
it 'does not remove unused methods if render_cell' do
|
378
388
|
content = <<-EOF
|
379
389
|
class PostsCell < Cell::Rails
|
380
390
|
def list; end
|
@@ -392,7 +402,7 @@ module RailsBestPractices
|
|
392
402
|
expect(runner.errors.size).to eq(0)
|
393
403
|
end
|
394
404
|
|
395
|
-
it '
|
405
|
+
it 'does not remove unused methods if render with state' do
|
396
406
|
content = <<-EOF
|
397
407
|
class PostsCell < Cell::Rails
|
398
408
|
def list
|
@@ -415,7 +425,7 @@ module RailsBestPractices
|
|
415
425
|
end
|
416
426
|
end
|
417
427
|
|
418
|
-
it '
|
428
|
+
it 'does not remove unused methods' do
|
419
429
|
route_content = <<-EOF
|
420
430
|
RailsBestPracticesCom::Application.routes.draw do
|
421
431
|
namespace :admin do
|
@@ -452,9 +462,12 @@ module RailsBestPractices
|
|
452
462
|
expect(runner.errors.size).to eq(0)
|
453
463
|
end
|
454
464
|
|
455
|
-
it '
|
456
|
-
runner =
|
457
|
-
|
465
|
+
it 'does not check ignored files' do
|
466
|
+
runner =
|
467
|
+
Core::Runner.new(
|
468
|
+
prepares: [Prepares::ControllerPrepare.new, Prepares::RoutePrepare.new],
|
469
|
+
reviews: described_class.new(ignored_files: /posts_controller/, except_methods: [])
|
470
|
+
)
|
458
471
|
content = <<-EOF
|
459
472
|
RailsBestPracticesCom::Application.routes.draw do
|
460
473
|
resources :posts do
|
@@ -5,14 +5,14 @@ require 'spec_helper'
|
|
5
5
|
module RailsBestPractices
|
6
6
|
module Reviews
|
7
7
|
describe RemoveUnusedMethodsInHelpersReview do
|
8
|
-
let(:runner)
|
8
|
+
let(:runner) do
|
9
9
|
Core::Runner.new(
|
10
10
|
prepares: [Prepares::ControllerPrepare.new, Prepares::HelperPrepare.new],
|
11
|
-
reviews:
|
11
|
+
reviews: described_class.new(except_methods: [])
|
12
12
|
)
|
13
|
-
|
13
|
+
end
|
14
14
|
|
15
|
-
it '
|
15
|
+
it 'removes unused methods' do
|
16
16
|
content = <<-EOF
|
17
17
|
module PostsHelper
|
18
18
|
def unused; end
|
@@ -22,10 +22,12 @@ module RailsBestPractices
|
|
22
22
|
runner.review('app/helpers/posts_helper.rb', content)
|
23
23
|
runner.after_review
|
24
24
|
expect(runner.errors.size).to eq(1)
|
25
|
-
expect(runner.errors[0].to_s).to eq(
|
25
|
+
expect(runner.errors[0].to_s).to eq(
|
26
|
+
'app/helpers/posts_helper.rb:2 - remove unused methods (PostsHelper#unused)'
|
27
|
+
)
|
26
28
|
end
|
27
29
|
|
28
|
-
it '
|
30
|
+
it 'does not remove unused methods if called on views' do
|
29
31
|
content = <<-EOF
|
30
32
|
module PostsHelper
|
31
33
|
def used?(post); end
|
@@ -42,7 +44,7 @@ module RailsBestPractices
|
|
42
44
|
expect(runner.errors.size).to eq(0)
|
43
45
|
end
|
44
46
|
|
45
|
-
it '
|
47
|
+
it 'does not remove unused methods if called on helpers' do
|
46
48
|
content = <<-EOF
|
47
49
|
module PostsHelper
|
48
50
|
def used?(post)
|
@@ -63,7 +65,7 @@ module RailsBestPractices
|
|
63
65
|
expect(runner.errors.size).to eq(0)
|
64
66
|
end
|
65
67
|
|
66
|
-
it '
|
68
|
+
it 'does not remove unused methods if called on controllers' do
|
67
69
|
helper_content = <<-EOF
|
68
70
|
module PostsHelper
|
69
71
|
def used?(post); end
|
@@ -88,7 +90,7 @@ module RailsBestPractices
|
|
88
90
|
expect(runner.errors.size).to eq(0)
|
89
91
|
end
|
90
92
|
|
91
|
-
it '
|
93
|
+
it 'does not remove unused methods if called in descendant controllers' do
|
92
94
|
application_helper_content = <<-EOF
|
93
95
|
module ApplicationHelper
|
94
96
|
def admin?; end
|
@@ -118,9 +120,12 @@ module RailsBestPractices
|
|
118
120
|
expect(runner.errors.size).to eq(0)
|
119
121
|
end
|
120
122
|
|
121
|
-
it '
|
122
|
-
runner =
|
123
|
-
|
123
|
+
it 'does not check ignored files' do
|
124
|
+
runner =
|
125
|
+
Core::Runner.new(
|
126
|
+
prepares: [Prepares::ControllerPrepare.new, Prepares::HelperPrepare.new],
|
127
|
+
reviews: described_class.new(ignored_files: /posts_helper/, except_methods: [])
|
128
|
+
)
|
124
129
|
|
125
130
|
content = <<-EOF
|
126
131
|
module PostsHelper
|