rails_best_practices 1.19.2 → 1.19.3
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 +6 -0
- data/README.md +1 -5
- data/Rakefile +1 -1
- data/lib/rails_best_practices/core/check.rb +6 -6
- data/lib/rails_best_practices/core/runner.rb +0 -2
- data/lib/rails_best_practices/prepares/controller_prepare.rb +3 -2
- data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +4 -5
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_controllers_review.rb +6 -2
- data/lib/rails_best_practices/reviews/use_before_filter_review.rb +4 -5
- data/lib/rails_best_practices/reviews/use_query_attribute_review.rb +5 -6
- data/lib/rails_best_practices/version.rb +1 -1
- data/rails_best_practices.gemspec +1 -5
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +18 -0
- metadata +2 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4a366fcb2bd3097eb1afcc7fa940b233a4177c6d
|
4
|
+
data.tar.gz: 45c9b324f42e0974e7314c1db9e634c782665e93
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa6aed2c8549d66e9650e456787a57cc32fb052011506e10cdc94ee43803d2016d644ec4e0aae1d9b08d583abb5d2eab7c4dd26eb8754e60bac46a02f8ad4459
|
7
|
+
data.tar.gz: 5558cb09e7a4a4f38af75078762d3dba880bd29a97ea2ba743df3e20edf8ca51a0fd3f440808f29043b8d00d99503257de3e18849ea3d6d355930728dd9187f6
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -89,13 +89,9 @@ To see the full list of command-line options, run:
|
|
89
89
|
|
90
90
|
Homepage: <http://rails-bestpractices.com>
|
91
91
|
|
92
|
-
Online Service: <http://railsbp.com>
|
93
|
-
|
94
92
|
GitHub: <http://github.com/railsbp/rails_best_practices>
|
95
93
|
|
96
|
-
|
97
|
-
|
98
|
-
Team Blog <http://rails-bestpractices.com/blog/posts>
|
94
|
+
Team Blog <http://rails-bestpractices.com>
|
99
95
|
|
100
96
|
Google Group: <https://groups.google.com/group/rails_best_practices>
|
101
97
|
|
data/Rakefile
CHANGED
@@ -7,7 +7,7 @@ require 'rake'
|
|
7
7
|
require 'rspec'
|
8
8
|
require 'rspec/core/rake_task'
|
9
9
|
|
10
|
-
$LOAD_PATH.unshift File.expand_path('
|
10
|
+
$LOAD_PATH.unshift File.expand_path('lib', __dir__)
|
11
11
|
require 'rails_best_practices/version'
|
12
12
|
|
13
13
|
RSpec::Core::RakeTask.new(:spec) do |spec|
|
@@ -139,7 +139,7 @@ module RailsBestPractices
|
|
139
139
|
# end of the class
|
140
140
|
add_callback :end_class do |_node|
|
141
141
|
klasses.pop
|
142
|
-
|
142
|
+
@klass = nil
|
143
143
|
end
|
144
144
|
end
|
145
145
|
end
|
@@ -296,12 +296,12 @@ module RailsBestPractices
|
|
296
296
|
end
|
297
297
|
|
298
298
|
def call_method(method_name, class_name = nil)
|
299
|
-
|
300
|
-
if methods.has_method?(
|
301
|
-
methods.get_method(
|
299
|
+
class_name ||= respond_to?(:current_class_name) ? current_class_name : current_module_name
|
300
|
+
if methods.has_method?(class_name, method_name)
|
301
|
+
methods.get_method(class_name, method_name).mark_used
|
302
302
|
end
|
303
|
-
methods.mark_parent_class_method_used(
|
304
|
-
methods.mark_subclasses_method_used(
|
303
|
+
methods.mark_parent_class_method_used(class_name, method_name)
|
304
|
+
methods.mark_subclasses_method_used(class_name, method_name)
|
305
305
|
methods.possible_public_used(method_name)
|
306
306
|
end
|
307
307
|
end
|
@@ -157,7 +157,6 @@ module RailsBestPractices
|
|
157
157
|
|
158
158
|
# load all plugin reviews.
|
159
159
|
def load_plugin_reviews
|
160
|
-
|
161
160
|
plugins = File.join(Runner.base_path, 'lib', 'rails_best_practices', 'plugins', 'reviews')
|
162
161
|
if File.directory?(plugins)
|
163
162
|
Dir[File.expand_path(File.join(plugins, '*.rb'))].each do |review|
|
@@ -169,7 +168,6 @@ module RailsBestPractices
|
|
169
168
|
end
|
170
169
|
end
|
171
170
|
end
|
172
|
-
|
173
171
|
end
|
174
172
|
end
|
175
173
|
end
|
@@ -24,6 +24,7 @@ module RailsBestPractices
|
|
24
24
|
# also check if the controller is inherit from InheritedResources::Base.
|
25
25
|
add_callback :start_class do |_node|
|
26
26
|
@controllers << @klass
|
27
|
+
@current_controller_name = @klass.to_s
|
27
28
|
if @inherited_resources
|
28
29
|
@actions = DEFAULT_ACTIONS
|
29
30
|
end
|
@@ -31,9 +32,9 @@ module RailsBestPractices
|
|
31
32
|
|
32
33
|
# remember the action names at the end of class node if the controller is a InheritedResources.
|
33
34
|
add_callback :end_class do |node|
|
34
|
-
if @inherited_resources && 'ApplicationController' !=
|
35
|
+
if @inherited_resources && 'ApplicationController' != @current_controller_name
|
35
36
|
@actions.each do |action|
|
36
|
-
@methods.add_method(
|
37
|
+
@methods.add_method(@current_controller_name, action, 'file' => node.file, 'line_number' => node.line_number)
|
37
38
|
end
|
38
39
|
end
|
39
40
|
end
|
@@ -168,11 +168,10 @@ module RailsBestPractices
|
|
168
168
|
foreign_id_keys = foreign_keys.select { |key| key.size == 1 && key.first =~ /_id/ }
|
169
169
|
foreign_type_keys = foreign_keys.select { |key| key.size == 1 && key.first =~ /_type/ }
|
170
170
|
foreign_id_keys.each do |id_key|
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
end
|
171
|
+
next unless type_key = foreign_type_keys.detect { |type_key| type_key.first == id_key.first.sub(/_id/, '') + '_type' }
|
172
|
+
foreign_keys.delete(id_key)
|
173
|
+
foreign_keys.delete(type_key)
|
174
|
+
foreign_keys << id_key + type_key
|
176
175
|
end
|
177
176
|
}
|
178
177
|
end
|
@@ -30,11 +30,15 @@ module RailsBestPractices
|
|
30
30
|
@inherited_resources = false
|
31
31
|
end
|
32
32
|
|
33
|
+
add_callback :start_class do |_node|
|
34
|
+
@current_controller_name = @klass.to_s
|
35
|
+
end
|
36
|
+
|
33
37
|
# mark custom inherited_resources methods as used.
|
34
38
|
add_callback :end_class do |_node|
|
35
39
|
if @inherited_resources
|
36
40
|
INHERITED_RESOURCES_METHODS.each do |method|
|
37
|
-
call_method(method)
|
41
|
+
call_method(method, @current_controller_name)
|
38
42
|
end
|
39
43
|
end
|
40
44
|
end
|
@@ -56,7 +60,7 @@ module RailsBestPractices
|
|
56
60
|
action_name = first_argument.hash_value('state').to_s
|
57
61
|
call_method(action_name, current_class_name)
|
58
62
|
end
|
59
|
-
when 'around_filter'
|
63
|
+
when 'around_filter', 'around_action'
|
60
64
|
node.arguments.all.each { |argument| mark_used(argument) }
|
61
65
|
when 'layout'
|
62
66
|
first_argument = node.arguments.all.first
|
@@ -37,11 +37,10 @@ module RailsBestPractices
|
|
37
37
|
remember_first_sentence(statement_node) if :def == statement_node.sexp_type
|
38
38
|
end
|
39
39
|
@first_sentences.each do |_first_sentence, def_nodes|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
end
|
40
|
+
next unless def_nodes.size > @customize_count
|
41
|
+
add_error "use before_filter for #{def_nodes.map { |node| node.method_name.to_s }.join(',')}",
|
42
|
+
node.file,
|
43
|
+
def_nodes.map(&:line_number).join(',')
|
45
44
|
end
|
46
45
|
end
|
47
46
|
|
@@ -40,12 +40,11 @@ module RailsBestPractices
|
|
40
40
|
node.conditional_statement.all_conditions
|
41
41
|
end
|
42
42
|
all_conditions.each do |condition_node|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
end
|
43
|
+
next unless query_attribute_node = query_attribute_node(condition_node)
|
44
|
+
receiver_node = query_attribute_node.receiver
|
45
|
+
add_error "use query attribute (#{receiver_node.receiver}.#{receiver_node.message}?)",
|
46
|
+
node.file,
|
47
|
+
query_attribute_node.line_number
|
49
48
|
end
|
50
49
|
end
|
51
50
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require File.expand_path('
|
3
|
+
require File.expand_path('lib/rails_best_practices/version', __dir__)
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = 'rails_best_practices'
|
@@ -46,10 +46,6 @@ Gem::Specification.new do |s|
|
|
46
46
|
|
47
47
|
http://rails-bestpractices.com
|
48
48
|
|
49
|
-
Please also try our online service
|
50
|
-
|
51
|
-
http://railsbp.com
|
52
|
-
|
53
49
|
Enjoy!
|
54
50
|
|
55
51
|
Richard Huang (flyerhzm@gmail.com)
|
@@ -89,6 +89,24 @@ module RailsBestPractices
|
|
89
89
|
expect(runner.errors.size).to eq(0)
|
90
90
|
end
|
91
91
|
|
92
|
+
it 'should not remove unused methods for around_action (new syntax)' do
|
93
|
+
content = <<-EOF
|
94
|
+
class PostsController < ActiveRecord::Base
|
95
|
+
around_action :use_time_zone
|
96
|
+
|
97
|
+
protected
|
98
|
+
|
99
|
+
def use_time_zone(&block)
|
100
|
+
Time.use_zone(current_user.time_zone, &block)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
EOF
|
104
|
+
runner.prepare('app/controllers/posts_controller.rb', content)
|
105
|
+
runner.review('app/controllers/posts_controller.rb', content)
|
106
|
+
runner.after_review
|
107
|
+
expect(runner.errors.size).to eq(0)
|
108
|
+
end
|
109
|
+
|
92
110
|
it 'should not remove unused methods for layout' do
|
93
111
|
content = <<-EOF
|
94
112
|
RailsBestPracticesCom::Application.routes.draw do
|
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.
|
4
|
+
version: 1.19.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Huang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -376,10 +376,6 @@ post_install_message: |
|
|
376
376
|
|
377
377
|
http://rails-bestpractices.com
|
378
378
|
|
379
|
-
Please also try our online service
|
380
|
-
|
381
|
-
http://railsbp.com
|
382
|
-
|
383
379
|
Enjoy!
|
384
380
|
|
385
381
|
Richard Huang (flyerhzm@gmail.com)
|