rails_best_practices 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +4 -0
- data/Gemfile.lock +18 -3
- data/Guardfile +19 -0
- data/README.md +5 -13
- data/lib/rails_best_practices.rb +3 -2
- data/lib/rails_best_practices/core.rb +1 -0
- data/lib/rails_best_practices/core/check.rb +37 -6
- data/lib/rails_best_practices/core/routes.rb +3 -1
- data/lib/rails_best_practices/core/runner.rb +4 -7
- data/lib/rails_best_practices/core_ext/erubis.rb +36 -0
- data/lib/rails_best_practices/core_ext/sexp.rb +1 -1
- data/lib/rails_best_practices/prepares/controller_prepare.rb +1 -1
- data/lib/rails_best_practices/prepares/model_prepare.rb +12 -6
- data/lib/rails_best_practices/prepares/route_prepare.rb +35 -16
- data/lib/rails_best_practices/prepares/schema_prepare.rb +2 -2
- data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +3 -3
- data/lib/rails_best_practices/reviews/move_code_into_helper_review.rb +2 -2
- data/lib/rails_best_practices/reviews/not_use_default_route_review.rb +3 -3
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_controllers_review.rb +25 -5
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +7 -5
- data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +3 -3
- data/lib/rails_best_practices/reviews/simplify_render_in_controllers_review.rb +1 -1
- data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +1 -1
- data/lib/rails_best_practices/version.rb +1 -1
- data/rails_best_practices.gemspec +4 -1
- data/spec/rails_best_practices/core/routes_spec.rb +12 -0
- data/spec/rails_best_practices/core_ext/erubis_spec.rb +24 -0
- data/spec/rails_best_practices/core_ext/sexp_spec.rb +5 -0
- data/spec/rails_best_practices/prepares/model_prepare_spec.rb +60 -0
- data/spec/rails_best_practices/prepares/route_prepare_spec.rb +67 -27
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +68 -1
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +1 -1
- data/spec/spec_helper.rb +20 -11
- metadata +65 -29
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rails_best_practices (1.
|
4
|
+
rails_best_practices (1.5.0)
|
5
5
|
activesupport
|
6
6
|
colored
|
7
7
|
erubis
|
@@ -16,10 +16,19 @@ GEM
|
|
16
16
|
colored (1.2)
|
17
17
|
diff-lcs (1.1.2)
|
18
18
|
erubis (2.7.0)
|
19
|
+
growl (1.0.3)
|
20
|
+
guard (0.8.8)
|
21
|
+
thor (~> 0.14.6)
|
22
|
+
guard-rspec (0.5.7)
|
23
|
+
guard (>= 0.8.4)
|
24
|
+
guard-spork (0.3.2)
|
25
|
+
guard (>= 0.8.4)
|
26
|
+
spork (>= 0.8.4)
|
19
27
|
haml (3.1.3)
|
20
28
|
i18n (0.5.0)
|
21
29
|
progressbar (0.9.1)
|
22
30
|
rake (0.8.7)
|
31
|
+
rb-fsevent (0.4.3.1)
|
23
32
|
ripper (1.0.2)
|
24
33
|
rspec (2.4.0)
|
25
34
|
rspec-core (~> 2.4.0)
|
@@ -30,16 +39,22 @@ GEM
|
|
30
39
|
diff-lcs (~> 1.1.2)
|
31
40
|
rspec-mocks (2.4.0)
|
32
41
|
sexp_processor (3.0.5)
|
33
|
-
|
42
|
+
spork (0.9.0.rc9)
|
43
|
+
thor (0.14.6)
|
34
44
|
|
35
45
|
PLATFORMS
|
36
46
|
ruby
|
37
47
|
|
38
48
|
DEPENDENCIES
|
39
49
|
bundler
|
50
|
+
growl
|
51
|
+
guard
|
52
|
+
guard-rspec
|
53
|
+
guard-spork
|
40
54
|
haml
|
41
55
|
rails_best_practices!
|
42
56
|
rake
|
57
|
+
rb-fsevent
|
43
58
|
ripper
|
44
59
|
rspec
|
45
|
-
|
60
|
+
spork (= 0.9.0.rc9)
|
data/Guardfile
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
guard 'spork', :rspec_env => { 'RAILS_ENV' => 'test' }, :cucumber => false, :test_unit => false, :bundler => false do
|
5
|
+
watch('config/application.rb')
|
6
|
+
watch('config/environment.rb')
|
7
|
+
watch(%r{^config/environments/.+\.rb$})
|
8
|
+
watch(%r{^config/initializers/.+\.rb$})
|
9
|
+
watch('Gemfile')
|
10
|
+
watch('Gemfile.lock')
|
11
|
+
watch('spec/spec_helper.rb')
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
guard 'rspec', :version => 2, :all_after_pass => false, :all_on_start => false, :cli => "--color --format nested --fail-fast --drb" do
|
16
|
+
watch(%r{^spec/.+_spec\.rb$})
|
17
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
18
|
+
watch('spec/spec_helper.rb') { "spec" }
|
19
|
+
end
|
data/README.md
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
rails_best_practices
|
2
2
|
====================
|
3
3
|
|
4
|
-
|
4
|
+
[![Build Status](https://secure.travis-ci.org/flyerhzm/rails_best_practices.png)](http://travis-ci.org/flyerhzm/rails_best_practices)
|
5
|
+
|
6
|
+
[![Click here to lend your support to: rails-bestpractices.com and make a donation at www.pledgie.com !](https://www.pledgie.com/campaigns/12057.png?skin_name=chrome)](http://www.pledgie.com/campaigns/12057)
|
7
|
+
|
8
|
+
rails_best_practices is a code metric tool to check the quality of rails codes. It supports both activerecord and mongoid from version 1.5.0.
|
5
9
|
|
6
10
|
Usage
|
7
11
|
-----
|
@@ -69,18 +73,6 @@ or add in Gemfile
|
|
69
73
|
|
70
74
|
gem "rails_best_practices"
|
71
75
|
|
72
|
-
if you still want to use rails_best_practices gem in ruby 1.8, please add ripper gem dependency before rails_best_practices.
|
73
|
-
|
74
|
-
Ruby 1.8
|
75
|
-
|
76
|
-
gem install ripper
|
77
|
-
gem install rails_best_practices
|
78
|
-
|
79
|
-
or add in Gemfile
|
80
|
-
|
81
|
-
gem "ripper"
|
82
|
-
gem "rails_best_practices"
|
83
|
-
|
84
76
|
Issue
|
85
77
|
-----
|
86
78
|
|
data/lib/rails_best_practices.rb
CHANGED
@@ -22,14 +22,15 @@
|
|
22
22
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
23
23
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
24
24
|
#++
|
25
|
-
require '
|
25
|
+
require 'fileutils'
|
26
|
+
|
26
27
|
require 'progressbar'
|
27
28
|
require 'colored'
|
29
|
+
|
28
30
|
require 'rails_best_practices/lexicals'
|
29
31
|
require 'rails_best_practices/prepares'
|
30
32
|
require 'rails_best_practices/reviews'
|
31
33
|
require 'rails_best_practices/core'
|
32
|
-
require 'fileutils'
|
33
34
|
|
34
35
|
# RailsBestPractices helps you to analyze your rails code, according to best practices on http://rails-bestpractices.
|
35
36
|
# if it finds any violatioins to best practices, it will give you some readable suggestions.
|
@@ -3,19 +3,24 @@ module RailsBestPractices
|
|
3
3
|
module Core
|
4
4
|
# A Check class that takes charge of checking the sexp.
|
5
5
|
class Check
|
6
|
-
|
7
6
|
ALL_FILES = /.*/
|
8
|
-
CONTROLLER_FILES = /controllers\/.*\.rb$/
|
7
|
+
CONTROLLER_FILES = /(controllers|cells)\/.*\.rb$/
|
9
8
|
MIGRATION_FILES = /db\/migrate\/.*\.rb$/
|
10
9
|
MODEL_FILES = /models\/.*\.rb$/
|
11
10
|
MAILER_FILES = /models\/.*mailer\.rb$|mailers\/.*mailer\.rb/
|
12
|
-
VIEW_FILES = /views\/.*\.(erb|haml)$/
|
13
|
-
PARTIAL_VIEW_FILES = /views\/.*\/_.*\.(erb|haml)$/
|
11
|
+
VIEW_FILES = /(views|cells)\/.*\.(erb|haml)$/
|
12
|
+
PARTIAL_VIEW_FILES = /(views|cells)\/.*\/_.*\.(erb|haml)$/
|
14
13
|
ROUTE_FILES = /config\/routes.*\.rb/
|
15
14
|
SCHEMA_FILE = /db\/schema\.rb/
|
16
15
|
HELPER_FILES = /helpers\/.*\.rb$/
|
17
16
|
DEPLOY_FILES = /config\/deploy.*\.rb/
|
18
17
|
|
18
|
+
def initialize(options={})
|
19
|
+
options.each do |key, value|
|
20
|
+
instance_variable_set("@#{key}", value)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
19
24
|
# interesting nodes that the check will parse.
|
20
25
|
def interesting_nodes
|
21
26
|
self.class.interesting_nodes
|
@@ -221,9 +226,14 @@ module RailsBestPractices
|
|
221
226
|
when "alias_method_chain"
|
222
227
|
method, feature = *node.arguments.all.map(&:to_s)
|
223
228
|
call_method("#{method}_with_#{feature}")
|
229
|
+
when /(before|after)_/
|
230
|
+
node.arguments.all.each { |argument| mark_used(argument) }
|
224
231
|
else
|
225
232
|
mark_used(node.message)
|
226
|
-
node.arguments.all.
|
233
|
+
last_argument = node.arguments.all.last
|
234
|
+
if last_argument.present? && :bare_assoc_hash == last_argument.sexp_type
|
235
|
+
last_argument.hash_values.each { |argument_value| mark_used(argument_value) }
|
236
|
+
end
|
227
237
|
end
|
228
238
|
end
|
229
239
|
|
@@ -254,7 +264,7 @@ module RailsBestPractices
|
|
254
264
|
when "try"
|
255
265
|
mark_used(node.arguments.all.first)
|
256
266
|
when "send"
|
257
|
-
if [:symbol_literal, :string_literal].include?(node.arguments.all
|
267
|
+
if [:symbol_literal, :string_literal].include?(node.arguments.all.first.sexp_type)
|
258
268
|
mark_used(node.arguments.all.first)
|
259
269
|
end
|
260
270
|
else
|
@@ -310,6 +320,27 @@ module RailsBestPractices
|
|
310
320
|
end
|
311
321
|
end
|
312
322
|
|
323
|
+
# Helper to check except methods.
|
324
|
+
module Exceptable
|
325
|
+
def self.included(base)
|
326
|
+
base.class_eval do
|
327
|
+
def except_methods
|
328
|
+
@except_methods + internal_except_methods
|
329
|
+
end
|
330
|
+
|
331
|
+
# check if the method is in the except methods list.
|
332
|
+
def excepted?(method)
|
333
|
+
except_methods.any? do |except_method|
|
334
|
+
class_name, method_name = except_method.split('#')
|
335
|
+
(class_name == '*' && method_name == method.method_name) ||
|
336
|
+
(method_name == '*' && class_name == method.class_name) ||
|
337
|
+
(class_name == method.class_name && method_name == method.method_name)
|
338
|
+
end
|
339
|
+
end
|
340
|
+
end
|
341
|
+
end
|
342
|
+
end
|
343
|
+
|
313
344
|
# Helper to parse the access control.
|
314
345
|
module Accessable
|
315
346
|
def self.included(base)
|
@@ -17,7 +17,9 @@ module RailsBestPractices
|
|
17
17
|
|
18
18
|
def initialize(namespaces, controller_name, action_name)
|
19
19
|
@namespaces = namespaces
|
20
|
-
|
20
|
+
entities = controller_name.split('/')
|
21
|
+
@namespaces += entities[0..-2] if entities.size > 1
|
22
|
+
@controller_name = entities.last
|
21
23
|
@action_name = action_name
|
22
24
|
end
|
23
25
|
|
@@ -1,11 +1,8 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require 'rubygems'
|
3
|
-
require 'ripper'
|
4
|
-
require 'erubis'
|
5
2
|
require 'yaml'
|
3
|
+
require 'ripper'
|
6
4
|
require 'active_support/inflector'
|
7
5
|
require 'active_support/core_ext/object/blank'
|
8
|
-
require 'active_support/core_ext/object/try'
|
9
6
|
|
10
7
|
module RailsBestPractices
|
11
8
|
module Core
|
@@ -151,12 +148,12 @@ module RailsBestPractices
|
|
151
148
|
# @param [String] filename is the filename of the erb or haml code.
|
152
149
|
# @param [String] content is the source code of erb or haml file.
|
153
150
|
def parse_erb_or_haml(filename, content)
|
154
|
-
if filename =~ /.*\.erb
|
155
|
-
content = Erubis::
|
151
|
+
if filename =~ /.*\.erb$|.*\.rhtml$/
|
152
|
+
content = Erubis::OnlyRuby.new(content).src
|
156
153
|
elsif filename =~ /.*\.haml$/
|
157
154
|
begin
|
158
155
|
require 'haml'
|
159
|
-
content = Haml::Engine.new(content).precompiled
|
156
|
+
content = Haml::Engine.new(content, {:ugly => true}).precompiled
|
160
157
|
# remove \xxx characters
|
161
158
|
content.gsub!(/\\\d{3}/, '')
|
162
159
|
rescue LoadError
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'erubis'
|
3
|
+
|
4
|
+
module Erubis
|
5
|
+
class OnlyRuby < Eruby
|
6
|
+
def add_preamble(src)
|
7
|
+
end
|
8
|
+
|
9
|
+
def add_text(src, text)
|
10
|
+
src << text.gsub(/[^\s;]/, '')
|
11
|
+
end
|
12
|
+
|
13
|
+
def add_stmt(src, code)
|
14
|
+
src << code
|
15
|
+
src << ";"
|
16
|
+
end
|
17
|
+
|
18
|
+
def add_expr_literal(src, code)
|
19
|
+
src << code
|
20
|
+
src << ";"
|
21
|
+
end
|
22
|
+
|
23
|
+
def add_expr_escaped(src, code)
|
24
|
+
src << code
|
25
|
+
src << ";"
|
26
|
+
end
|
27
|
+
|
28
|
+
def add_expr_debug(src, code)
|
29
|
+
src << code
|
30
|
+
src << ";"
|
31
|
+
end
|
32
|
+
|
33
|
+
def add_postamble(src)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -48,7 +48,7 @@ module RailsBestPractices
|
|
48
48
|
# restrict actions for inherited_resources
|
49
49
|
def start_command(node)
|
50
50
|
if @inherited_resources && "actions" == node.message.to_s
|
51
|
-
if "all" == node.arguments.all
|
51
|
+
if "all" == node.arguments.all.first.to_s
|
52
52
|
@actions = DEFAULT_ACTIONS
|
53
53
|
option_argument = node.arguments.all[1]
|
54
54
|
if :bare_assoc_hash == option_argument.sexp_type && option_argument.hash_value("except")
|
@@ -11,15 +11,16 @@ module RailsBestPractices
|
|
11
11
|
interesting_nodes :class, :def, :command, :var_ref, :alias
|
12
12
|
interesting_files MODEL_FILES
|
13
13
|
|
14
|
-
ASSOCIATION_METHODS = %w(belongs_to has_one has_many has_and_belongs_to_many)
|
14
|
+
ASSOCIATION_METHODS = %w(belongs_to has_one has_many has_and_belongs_to_many embeds_many embeds_one embedded_in)
|
15
15
|
|
16
16
|
def initialize
|
17
17
|
@models = Prepares.models
|
18
18
|
@model_associations = Prepares.model_associations
|
19
|
+
@model_attributes = Prepares.model_attributes
|
19
20
|
@methods = Prepares.model_methods
|
20
21
|
end
|
21
22
|
|
22
|
-
#
|
23
|
+
# remember the class name.
|
23
24
|
def start_class(node)
|
24
25
|
if "ActionMailer::Base" != current_extend_class_name
|
25
26
|
@models << @klass
|
@@ -59,12 +60,17 @@ module RailsBestPractices
|
|
59
60
|
def start_command(node)
|
60
61
|
case node.message.to_s
|
61
62
|
when *%w(named_scope scope alias_method)
|
62
|
-
method_name = node.arguments.all
|
63
|
+
method_name = node.arguments.all.first.to_s
|
63
64
|
@methods.add_method(current_class_name, method_name, {"file" => node.file, "line" => node.line}, current_access_control)
|
64
65
|
when "alias_method_chain"
|
65
66
|
method, feature = *node.arguments.all.map(&:to_s)
|
66
67
|
@methods.add_method(current_class_name, "#{method}_with_#{feature}", {"file" => node.file, "line" => node.line}, current_access_control)
|
67
68
|
@methods.add_method(current_class_name, "#{method}", {"file" => node.file, "line" => node.line}, current_access_control)
|
69
|
+
when "field"
|
70
|
+
arguments = node.arguments.all
|
71
|
+
attribute_name = arguments.first.to_s
|
72
|
+
attribute_type = arguments.last.hash_value("type").present? ? arguments.last.hash_value("type").to_s : "String"
|
73
|
+
@model_attributes.add_attribute(current_class_name, attribute_name, attribute_type)
|
68
74
|
when *ASSOCIATION_METHODS
|
69
75
|
remember_association(node)
|
70
76
|
else
|
@@ -81,9 +87,9 @@ module RailsBestPractices
|
|
81
87
|
# remember associations, with class to association names.
|
82
88
|
def remember_association(node)
|
83
89
|
association_meta = node.message.to_s
|
84
|
-
association_name = node.arguments.all
|
85
|
-
arguments_node = node.arguments.all
|
86
|
-
if arguments_node
|
90
|
+
association_name = node.arguments.all.first.to_s
|
91
|
+
arguments_node = node.arguments.all.last
|
92
|
+
if arguments_node.hash_value("class_name").present?
|
87
93
|
association_class = arguments_node.hash_value("class_name").to_s
|
88
94
|
end
|
89
95
|
association_class ||= association_name.classify
|
@@ -24,10 +24,22 @@ module RailsBestPractices
|
|
24
24
|
when "resource"
|
25
25
|
add_resource_routes(node)
|
26
26
|
when "get", "post", "put", "delete"
|
27
|
-
|
28
|
-
|
27
|
+
first_argument = node.arguments.all.first
|
28
|
+
if current_controller_name.present?
|
29
|
+
action_name = first_argument.to_s
|
30
|
+
@routes.add_route(current_namespaces, current_controller_name, action_name)
|
31
|
+
else
|
32
|
+
if :bare_assoc_hash == first_argument.sexp_type
|
33
|
+
route_node = first_argument.hash_values.first
|
34
|
+
controller_name, action_name = route_node.to_s.split('#')
|
35
|
+
else
|
36
|
+
controller_name, action_name = first_argument.to_s.split('/')
|
37
|
+
end
|
38
|
+
@routes.add_route(current_namespaces, controller_name.underscore, action_name)
|
39
|
+
end
|
29
40
|
when "match", "root"
|
30
41
|
options = node.arguments.all.last
|
42
|
+
return if :string_literal == options.sexp_type
|
31
43
|
if options.hash_value("controller").present?
|
32
44
|
controller_name = options.hash_value("controller").to_s
|
33
45
|
action_name = options.hash_value("action").present? ? options.hash_value("action").to_s : "*"
|
@@ -55,9 +67,11 @@ module RailsBestPractices
|
|
55
67
|
# nothing to do
|
56
68
|
else
|
57
69
|
options = node.arguments.all.last
|
58
|
-
|
70
|
+
if options.hash_value("controller").present?
|
71
|
+
@controller_name = options.hash_value("controller").to_s
|
72
|
+
end
|
59
73
|
action_name = options.hash_value("action").present? ? options.hash_value("action").to_s : "*"
|
60
|
-
@routes.add_route(current_namespaces,
|
74
|
+
@routes.add_route(current_namespaces, current_controller_name, action_name)
|
61
75
|
end
|
62
76
|
end
|
63
77
|
|
@@ -65,6 +79,11 @@ module RailsBestPractices
|
|
65
79
|
def start_method_add_block(node)
|
66
80
|
if "namespace" == node.message.to_s
|
67
81
|
@namespaces << node.arguments.all.first.to_s
|
82
|
+
elsif "with_options" == node.message.to_s
|
83
|
+
argument = node.arguments.all.last
|
84
|
+
if :bare_assoc_hash == argument.sexp_type && argument.hash_value("controller").present?
|
85
|
+
@controller_name = argument.hash_value("controller").to_s
|
86
|
+
end
|
68
87
|
end
|
69
88
|
end
|
70
89
|
|
@@ -80,27 +99,27 @@ module RailsBestPractices
|
|
80
99
|
def add_#{route_name}_routes(node)
|
81
100
|
resource_names = node.arguments.all.select { |argument| :symbol_literal == argument.sexp_type }
|
82
101
|
resource_names.each do |resource_name|
|
83
|
-
@
|
102
|
+
@controller_name = node.arguments.all.first.to_s
|
84
103
|
options = node.arguments.all.last
|
85
104
|
if options.hash_value("controller").present?
|
86
|
-
@
|
105
|
+
@controller_name = options.hash_value("controller").to_s
|
87
106
|
end
|
88
107
|
action_names = if options.hash_value("only").present?
|
89
108
|
get_#{route_name}_actions(options.hash_value("only").to_object)
|
90
109
|
elsif options.hash_value("except").present?
|
91
|
-
self.class.const_get(:#{route_name.upcase}_ACTIONS) - get_#{route_name}_actions(options.hash_value("except").to_object)
|
110
|
+
self.class.const_get(:#{route_name.to_s.upcase}_ACTIONS) - get_#{route_name}_actions(options.hash_value("except").to_object)
|
92
111
|
else
|
93
|
-
self.class.const_get(:#{route_name.upcase}_ACTIONS)
|
112
|
+
self.class.const_get(:#{route_name.to_s.upcase}_ACTIONS)
|
94
113
|
end
|
95
|
-
|
96
|
-
@routes.add_route(current_namespaces,
|
114
|
+
action_names.each do |action_name|
|
115
|
+
@routes.add_route(current_namespaces, current_controller_name, action_name)
|
97
116
|
end
|
98
117
|
|
99
118
|
member_routes = options.hash_value("member")
|
100
119
|
if member_routes.present?
|
101
120
|
action_names = :array == member_routes.sexp_type ? member_routes.to_object : member_routes.hash_keys
|
102
121
|
action_names.each do |action_name|
|
103
|
-
@routes.add_route(current_namespaces,
|
122
|
+
@routes.add_route(current_namespaces, current_controller_name, action_name)
|
104
123
|
end
|
105
124
|
end
|
106
125
|
|
@@ -108,7 +127,7 @@ module RailsBestPractices
|
|
108
127
|
if collection_routes.present?
|
109
128
|
action_names = :array == collection_routes.sexp_type ? collection_routes.to_object : collection_routes.hash_keys
|
110
129
|
action_names.each do |action_name|
|
111
|
-
@routes.add_route(current_namespaces,
|
130
|
+
@routes.add_route(current_namespaces, current_controller_name, action_name)
|
112
131
|
end
|
113
132
|
end
|
114
133
|
end
|
@@ -117,11 +136,11 @@ module RailsBestPractices
|
|
117
136
|
def get_#{route_name}_actions(action_names)
|
118
137
|
case action_names
|
119
138
|
when "all"
|
120
|
-
self.class.const_get(:#{route_name.upcase}_ACTIONS)
|
139
|
+
self.class.const_get(:#{route_name.to_s.upcase}_ACTIONS)
|
121
140
|
when "none"
|
122
141
|
[]
|
123
142
|
else
|
124
|
-
action_names
|
143
|
+
Array(action_names)
|
125
144
|
end
|
126
145
|
end
|
127
146
|
|
@@ -134,8 +153,8 @@ module RailsBestPractices
|
|
134
153
|
@namespaces.dup
|
135
154
|
end
|
136
155
|
|
137
|
-
def
|
138
|
-
@
|
156
|
+
def current_controller_name
|
157
|
+
@controller_name
|
139
158
|
end
|
140
159
|
end
|
141
160
|
end
|