rails_best_practices 1.10.1 → 1.11.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/README.md +11 -6
- data/assets/result.html.erb +76 -46
- data/install_supported_rubies.sh +3 -0
- data/lib/rails_best_practices.rb +2 -1
- data/lib/rails_best_practices/analyzer.rb +10 -8
- data/lib/rails_best_practices/core.rb +0 -4
- data/lib/rails_best_practices/core/check.rb +41 -117
- data/lib/rails_best_practices/core/error.rb +3 -9
- data/lib/rails_best_practices/core/runner.rb +20 -80
- data/lib/rails_best_practices/lexicals/long_line_check.rb +2 -1
- data/lib/rails_best_practices/lexicals/remove_tab_check.rb +1 -3
- data/lib/rails_best_practices/lexicals/remove_trailing_whitespace_check.rb +1 -3
- data/lib/rails_best_practices/prepares/config_prepare.rb +1 -1
- data/lib/rails_best_practices/prepares/controller_prepare.rb +7 -8
- data/lib/rails_best_practices/prepares/helper_prepare.rb +2 -2
- data/lib/rails_best_practices/prepares/mailer_prepare.rb +1 -1
- data/lib/rails_best_practices/prepares/model_prepare.rb +6 -7
- data/lib/rails_best_practices/prepares/route_prepare.rb +12 -13
- data/lib/rails_best_practices/prepares/schema_prepare.rb +2 -2
- data/lib/rails_best_practices/reviews/add_model_virtual_attribute_review.rb +19 -15
- data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +10 -17
- data/lib/rails_best_practices/reviews/dry_bundler_in_capistrano_review.rb +2 -5
- data/lib/rails_best_practices/reviews/hash_syntax_review.rb +3 -30
- data/lib/rails_best_practices/reviews/isolate_seed_data_review.rb +7 -10
- data/lib/rails_best_practices/reviews/keep_finders_on_their_own_model_review.rb +5 -9
- data/lib/rails_best_practices/reviews/law_of_demeter_review.rb +10 -13
- data/lib/rails_best_practices/reviews/move_code_into_controller_review.rb +6 -9
- data/lib/rails_best_practices/reviews/move_code_into_helper_review.rb +2 -5
- data/lib/rails_best_practices/reviews/move_code_into_model_review.rb +7 -13
- data/lib/rails_best_practices/reviews/move_finder_to_named_scope_review.rb +3 -6
- data/lib/rails_best_practices/reviews/move_model_logic_into_model_review.rb +6 -9
- data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +3 -6
- data/lib/rails_best_practices/reviews/not_use_default_route_review.rb +4 -7
- data/lib/rails_best_practices/reviews/not_use_time_ago_in_words_review.rb +2 -5
- data/lib/rails_best_practices/reviews/overuse_route_customizations_review.rb +7 -10
- data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +2 -5
- data/lib/rails_best_practices/reviews/remove_empty_helpers_review.rb +2 -5
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_controllers_review.rb +8 -6
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_helpers_review.rb +1 -2
- data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +4 -5
- data/lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb +9 -12
- data/lib/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review.rb +2 -13
- data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +18 -26
- data/lib/rails_best_practices/reviews/review.rb +6 -7
- data/lib/rails_best_practices/reviews/simplify_render_in_controllers_review.rb +2 -5
- data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +2 -5
- data/lib/rails_best_practices/reviews/use_before_filter_review.rb +2 -5
- data/lib/rails_best_practices/reviews/use_model_association_review.rb +11 -14
- data/lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb +11 -8
- data/lib/rails_best_practices/reviews/use_observer_review.rb +8 -11
- data/lib/rails_best_practices/reviews/use_parentheses_in_method_def_review.rb +1 -1
- data/lib/rails_best_practices/reviews/use_query_attribute_review.rb +12 -18
- data/lib/rails_best_practices/reviews/use_say_with_time_in_migrations_review.rb +7 -10
- data/lib/rails_best_practices/reviews/use_scope_access_review.rb +4 -10
- data/lib/rails_best_practices/version.rb +1 -1
- data/rails_best_practices.gemspec +1 -1
- data/rails_best_practices.yml +5 -5
- data/spec/rails_best_practices/core/check_spec.rb +0 -67
- data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +0 -1
- data/spec/rails_best_practices/prepares/model_prepare_spec.rb +0 -4
- data/spec/rails_best_practices/reviews/hash_syntax_review_spec.rb +3 -30
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +22 -0
- data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +19 -0
- data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +2 -2
- data/spec/spec_helper.rb +0 -4
- metadata +28 -41
- data/Gemfile.lock +0 -71
- data/lib/rails_best_practices/core/checking_visitor.rb +0 -80
- data/lib/rails_best_practices/core/nil.rb +0 -37
- data/lib/rails_best_practices/core_ext/enumerable.rb +0 -9
- data/lib/rails_best_practices/core_ext/sexp.rb +0 -840
- data/spec/rails_best_practices/core/checking_visitor_spec.rb +0 -79
- data/spec/rails_best_practices/core/nil_spec.rb +0 -37
- data/spec/rails_best_practices/core_ext/enumerable_spec.rb +0 -7
- data/spec/rails_best_practices/core_ext/sexp_spec.rb +0 -613
@@ -3,10 +3,10 @@ require 'rails_best_practices/reviews/review'
|
|
3
3
|
|
4
4
|
module RailsBestPractices
|
5
5
|
module Reviews
|
6
|
-
# Review a migration file to make sure to use say or say_with_time for customized data changes
|
6
|
+
# Review a migration file to make sure to use say or say_with_time for customized data changes
|
7
7
|
# to produce a more readable output.
|
8
8
|
#
|
9
|
-
# See the best practice detials here
|
9
|
+
# See the best practice detials here
|
10
10
|
# http://rails-bestpractices.com/posts/46-use-say-and-say_with_time-in-migrations-to-make-a-useful-migration-log.
|
11
11
|
#
|
12
12
|
# Implementation:
|
@@ -19,31 +19,28 @@ module RailsBestPractices
|
|
19
19
|
class UseSayWithTimeInMigrationsReview < Review
|
20
20
|
interesting_nodes :defs
|
21
21
|
interesting_files MIGRATION_FILES
|
22
|
+
url "http://rails-bestpractices.com/posts/46-use-say-and-say_with_time-in-migrations-to-make-a-useful-migration-log"
|
22
23
|
|
23
24
|
WITH_SAY_METHODS = %w(say say_with_time)
|
24
25
|
|
25
|
-
|
26
|
-
"http://rails-bestpractices.com/posts/46-use-say-and-say_with_time-in-migrations-to-make-a-useful-migration-log"
|
27
|
-
end
|
28
|
-
|
29
|
-
# check a class method define node to see if there are method calls that need to be wrapped by say
|
26
|
+
# check a class method define node to see if there are method calls that need to be wrapped by say
|
30
27
|
# or say_with_time.
|
31
28
|
#
|
32
29
|
# it will check the first block node,
|
33
30
|
# if any method call whose message is not default migration methods in the block node,
|
34
31
|
# then such method call should be wrapped by say or say_with_time
|
35
|
-
|
32
|
+
add_callback :start_defs do |node|
|
36
33
|
node.body.statements.each do |child_node|
|
37
34
|
next if child_node.grep_nodes_count(sexp_type: [:fcall, :command], message: WITH_SAY_METHODS) > 0
|
38
35
|
|
39
|
-
|
36
|
+
receiver_node = if :method_add_block == child_node.sexp_type
|
40
37
|
child_node[1]
|
41
38
|
elsif :method_add_arg == child_node.sexp_type
|
42
39
|
child_node[1]
|
43
40
|
else
|
44
41
|
child_node
|
45
42
|
end
|
46
|
-
if :call ==
|
43
|
+
if :call == receiver_node.sexp_type
|
47
44
|
add_error("use say with time in migrations", node.file, child_node.line)
|
48
45
|
end
|
49
46
|
end
|
@@ -18,23 +18,17 @@ module RailsBestPractices
|
|
18
18
|
class UseScopeAccessReview < Review
|
19
19
|
interesting_nodes :if, :unless, :elsif
|
20
20
|
interesting_files CONTROLLER_FILES
|
21
|
-
|
22
|
-
def url
|
23
|
-
"http://rails-bestpractices.com/posts/3-use-scope-access"
|
24
|
-
end
|
21
|
+
url "http://rails-bestpractices.com/posts/3-use-scope-access"
|
25
22
|
|
26
23
|
# check if node.
|
27
24
|
#
|
28
25
|
# if it is a method call compared with current_user or current_user.id,
|
29
26
|
# and there is a redirect_to method call in the block body,
|
30
27
|
# then it should be replaced by using scope access.
|
31
|
-
|
28
|
+
add_callback :start_if, :start_unless, :start_elsif do |node|
|
32
29
|
add_error "use scope access" if current_user_redirect?(node)
|
33
30
|
end
|
34
31
|
|
35
|
-
alias_method :start_unless, :start_if
|
36
|
-
alias_method :start_elsif, :start_if
|
37
|
-
|
38
32
|
private
|
39
33
|
# check a if node to see
|
40
34
|
#
|
@@ -49,14 +43,14 @@ module RailsBestPractices
|
|
49
43
|
end
|
50
44
|
results = all_conditions.map do |condition_node|
|
51
45
|
["==", "!="].include?(condition_node.message.to_s) &&
|
52
|
-
(current_user?(condition_node.argument) || current_user?(condition_node.
|
46
|
+
(current_user?(condition_node.argument) || current_user?(condition_node.receiver))
|
53
47
|
end
|
54
48
|
results.any? { |result| result == true } && node.body.grep_node(message: "redirect_to")
|
55
49
|
end
|
56
50
|
|
57
51
|
# check a call node to see if it uses current_user, or current_user.id.
|
58
52
|
def current_user?(node)
|
59
|
-
"current_user" == node.to_s || ("current_user" == node.
|
53
|
+
"current_user" == node.to_s || ("current_user" == node.receiver.to_s && "id" == node.message.to_s)
|
60
54
|
end
|
61
55
|
end
|
62
56
|
end
|
data/rails_best_practices.yml
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
AddModelVirtualAttributeCheck: { }
|
2
2
|
AlwaysAddDbIndexCheck: { }
|
3
3
|
DryBundlerInCapistranoCheck: { }
|
4
|
-
HashSyntaxCheck: {
|
4
|
+
#HashSyntaxCheck: { }
|
5
5
|
IsolateSeedDataCheck: { }
|
6
6
|
KeepFindersOnTheirOwnModelCheck: { }
|
7
7
|
LawOfDemeterCheck: { }
|
8
|
-
LongLineCheck: { max_line_length: 80 }
|
8
|
+
#LongLineCheck: { max_line_length: 80 }
|
9
9
|
MoveCodeIntoControllerCheck: { }
|
10
10
|
MoveCodeIntoHelperCheck: { array_count: 3 }
|
11
11
|
MoveCodeIntoModelCheck: { use_count: 2 }
|
@@ -17,7 +17,7 @@ NotUseTimeAgoInWordsCheck: { }
|
|
17
17
|
OveruseRouteCustomizationsCheck: { customize_count: 3 }
|
18
18
|
ProtectMassAssignmentCheck: { }
|
19
19
|
RemoveEmptyHelpersCheck: { }
|
20
|
-
RemoveTabCheck: { }
|
20
|
+
#RemoveTabCheck: { }
|
21
21
|
RemoveTrailingWhitespaceCheck: { }
|
22
22
|
RemoveUnusedMethodsInControllersCheck: { except_methods: [] }
|
23
23
|
RemoveUnusedMethodsInHelpersCheck: { except_methods: [] }
|
@@ -27,10 +27,10 @@ ReplaceInstanceVariableWithLocalVariableCheck: { }
|
|
27
27
|
RestrictAutoGeneratedRoutesCheck: { }
|
28
28
|
SimplifyRenderInControllersCheck: { }
|
29
29
|
SimplifyRenderInViewsCheck: { }
|
30
|
-
UseBeforeFilterCheck: { customize_count: 2 }
|
30
|
+
#UseBeforeFilterCheck: { customize_count: 2 }
|
31
31
|
UseModelAssociationCheck: { }
|
32
32
|
UseMultipartAlternativeAsContentTypeOfEmailCheck: { }
|
33
|
-
UseParenthesesInMethodDefCheck: { }
|
33
|
+
#UseParenthesesInMethodDefCheck: { }
|
34
34
|
UseObserverCheck: { }
|
35
35
|
UseQueryAttributeCheck: { }
|
36
36
|
UseSayWithTimeInMigrationsCheck: { }
|
@@ -4,73 +4,6 @@ module RailsBestPractices::Core
|
|
4
4
|
describe Check do
|
5
5
|
let(:check) { Check.new }
|
6
6
|
|
7
|
-
it "should get empty interesting nodes" do
|
8
|
-
check.interesting_nodes.should == []
|
9
|
-
end
|
10
|
-
|
11
|
-
it "should match none of interesting files" do
|
12
|
-
check.interesting_files.should == []
|
13
|
-
end
|
14
|
-
|
15
|
-
context "node_start" do
|
16
|
-
it "should call start_if" do
|
17
|
-
node = stub(sexp_type: :if)
|
18
|
-
check.should_receive(:send).with("start_if", node)
|
19
|
-
check.node_start(node)
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should call start_call" do
|
23
|
-
node = stub(sexp_type: :call)
|
24
|
-
check.should_receive(:send).with("start_call", node)
|
25
|
-
check.node_start(node)
|
26
|
-
end
|
27
|
-
|
28
|
-
it "should print node if debug mode" do
|
29
|
-
node = stub(sexp_type: :call)
|
30
|
-
Check.class_eval { debug }
|
31
|
-
check.should_receive(:send).with("start_call", node)
|
32
|
-
check.should_receive(:ap).with(node)
|
33
|
-
check.node_start(node)
|
34
|
-
Check.class_eval { @debug = false }
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
context "node_end" do
|
39
|
-
it "should call end_if" do
|
40
|
-
node = stub(sexp_type: :if)
|
41
|
-
check.should_receive(:send).with("end_if", node)
|
42
|
-
check.node_end(node)
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should call end_call" do
|
46
|
-
node = stub(sexp_type: :call)
|
47
|
-
check.should_receive(:send).with("end_call", node)
|
48
|
-
check.node_end(node)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
context "callback" do
|
53
|
-
it "should add callback to start_call" do
|
54
|
-
execute = false
|
55
|
-
check.class.add_callback "start_call" do
|
56
|
-
execute = true
|
57
|
-
end
|
58
|
-
node = stub(sexp_type: :call)
|
59
|
-
check.node_start(node)
|
60
|
-
execute.should be_true
|
61
|
-
end
|
62
|
-
|
63
|
-
it "should ad callbacks to end_call" do
|
64
|
-
execute = false
|
65
|
-
check.class.add_callback "end_call" do
|
66
|
-
execute = true
|
67
|
-
end
|
68
|
-
node = stub(sexp_type: :call)
|
69
|
-
check.node_end(node)
|
70
|
-
execute.should be_true
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
7
|
context "debug" do
|
75
8
|
it "should be debug mode" do
|
76
9
|
Check.debug
|
@@ -4,7 +4,6 @@ module RailsBestPractices
|
|
4
4
|
module Prepares
|
5
5
|
describe ControllerPrepare do
|
6
6
|
let(:runner) { Core::Runner.new(prepares: [ControllerPrepare.new, HelperPrepare.new]) }
|
7
|
-
before(:each) { runner.whiny = true }
|
8
7
|
|
9
8
|
context "methods" do
|
10
9
|
it "should parse controller methods" do
|
@@ -16,15 +16,14 @@ module RailsBestPractices
|
|
16
16
|
runner.errors[0].to_s.should == "app/models/user.rb:2 - change Hash Syntax to 1.9"
|
17
17
|
end
|
18
18
|
|
19
|
-
it "should find 1.8 Hash with
|
19
|
+
it "should not find 1.8 Hash with string" do
|
20
20
|
content =<<-EOF
|
21
21
|
class User < ActiveRecord::Base
|
22
22
|
CONST = { "foo" => "bar" }
|
23
23
|
end
|
24
24
|
EOF
|
25
25
|
runner.review('app/models/user.rb', content)
|
26
|
-
runner.should have(
|
27
|
-
runner.errors[0].to_s.should == "app/models/user.rb:2 - change Hash Syntax to 1.9"
|
26
|
+
runner.should have(0).errors
|
28
27
|
end
|
29
28
|
|
30
29
|
it "should not alert on 1.9 Syntax" do
|
@@ -37,32 +36,6 @@ module RailsBestPractices
|
|
37
36
|
runner.should have(0).errors
|
38
37
|
end
|
39
38
|
|
40
|
-
it "should only check symbol syntax" do
|
41
|
-
runner = Core::Runner.new(reviews: HashSyntaxReview.new(only_symbol: true))
|
42
|
-
content =<<-EOF
|
43
|
-
class User < ActiveRecord::Base
|
44
|
-
SYMBOL_CONST = { :foo => :bar }
|
45
|
-
STRING_CONST = { "foo" => "bar" }
|
46
|
-
end
|
47
|
-
EOF
|
48
|
-
runner.review('app/models/user.rb', content)
|
49
|
-
runner.should have(1).errors
|
50
|
-
runner.errors[0].to_s.should == "app/models/user.rb:2 - change Hash Syntax to 1.9"
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should only check string syntax" do
|
54
|
-
runner = Core::Runner.new(reviews: HashSyntaxReview.new(only_string: true))
|
55
|
-
content =<<-EOF
|
56
|
-
class User < ActiveRecord::Base
|
57
|
-
SYMBOL_CONST = { :foo => :bar }
|
58
|
-
STRING_CONST = { "foo" => "bar" }
|
59
|
-
end
|
60
|
-
EOF
|
61
|
-
runner.review('app/models/user.rb', content)
|
62
|
-
runner.should have(1).errors
|
63
|
-
runner.errors[0].to_s.should == "app/models/user.rb:3 - change Hash Syntax to 1.9"
|
64
|
-
end
|
65
|
-
|
66
39
|
it "should ignore haml_out" do
|
67
40
|
content =<<-EOF
|
68
41
|
%div{ class: "foo1" }
|
@@ -83,7 +56,7 @@ module RailsBestPractices
|
|
83
56
|
|
84
57
|
it "should not consider hash with charaters not valid for symbol" do
|
85
58
|
content =<<-EOF
|
86
|
-
|
59
|
+
receiver.stub(:` => 'Error')
|
87
60
|
EOF
|
88
61
|
runner.review('app/models/post.rb', content)
|
89
62
|
runner.should have(0).errors
|
@@ -80,6 +80,28 @@ module RailsBestPractices
|
|
80
80
|
runner.should have(0).errors
|
81
81
|
end
|
82
82
|
|
83
|
+
it "should not remove unused methods for layout" do
|
84
|
+
content =<<-EOF
|
85
|
+
RailsBestPracticesCom::Application.routes.draw do
|
86
|
+
resources :posts
|
87
|
+
end
|
88
|
+
EOF
|
89
|
+
runner.prepare('config/routes.rb', content)
|
90
|
+
content =<<-EOF
|
91
|
+
class PostsController < ActiveRecord::Base
|
92
|
+
layout :choose_layout
|
93
|
+
private
|
94
|
+
def choose_layout
|
95
|
+
"default"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
EOF
|
99
|
+
runner.prepare('app/controllers/posts_controller.rb', content)
|
100
|
+
runner.review('app/controllers/posts_controller.rb', content)
|
101
|
+
runner.after_review
|
102
|
+
runner.should have(0).errors
|
103
|
+
end
|
104
|
+
|
83
105
|
it "should not remove inherited_resources methods" do
|
84
106
|
content =<<-EOF
|
85
107
|
RailsBestPracticesCom::Application.routes.draw do
|
@@ -670,6 +670,25 @@ module RailsBestPractices
|
|
670
670
|
end
|
671
671
|
end
|
672
672
|
|
673
|
+
it "should not remove unused methods for rabl view" do
|
674
|
+
content =<<-EOF
|
675
|
+
class User
|
676
|
+
def first_name; end
|
677
|
+
def last_name; end
|
678
|
+
end
|
679
|
+
EOF
|
680
|
+
runner.prepare("app/models/user.rb", content)
|
681
|
+
runner.review("app/models/user.rb", content)
|
682
|
+
content =<<-EOF
|
683
|
+
node :full_name do |u|
|
684
|
+
u.first_name + " " + u.last_name
|
685
|
+
end
|
686
|
+
EOF
|
687
|
+
runner.review("app/views/users/show.json.rabl", content)
|
688
|
+
runner.after_review
|
689
|
+
runner.should have(0).errors
|
690
|
+
end
|
691
|
+
|
673
692
|
it "should not skip :call as call message" do
|
674
693
|
content =<<-EOF
|
675
694
|
module DateRange
|
@@ -31,7 +31,7 @@ module RailsBestPractices
|
|
31
31
|
<<-EOF
|
32
32
|
class ProjectMailer < ActionMailer::Base
|
33
33
|
def send_email(email)
|
34
|
-
|
34
|
+
receiver email.receiver
|
35
35
|
from email.from
|
36
36
|
recipients email.recipients
|
37
37
|
sent_on Time.now
|
@@ -145,7 +145,7 @@ module RailsBestPractices
|
|
145
145
|
<<-EOF
|
146
146
|
class ProjectMailer < ActionMailer::Base
|
147
147
|
def send_email(email)
|
148
|
-
|
148
|
+
receiver email.receiver
|
149
149
|
from email.from
|
150
150
|
recipients email.recipients
|
151
151
|
sent_on Time.now
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_best_practices
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
requirement: &
|
15
|
+
name: code_analyzer
|
16
|
+
requirement: &70092487156320 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70092487156320
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: progressbar
|
27
|
-
requirement: &
|
27
|
+
requirement: &70092487155800 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70092487155800
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: colored
|
38
|
-
requirement: &
|
38
|
+
requirement: &70092487171640 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70092487171640
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: erubis
|
49
|
-
requirement: &
|
49
|
+
requirement: &70092487171160 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70092487171160
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: i18n
|
60
|
-
requirement: &
|
60
|
+
requirement: &70092487170620 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70092487170620
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: activesupport
|
71
|
-
requirement: &
|
71
|
+
requirement: &70092487170080 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70092487170080
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: awesome_print
|
82
|
-
requirement: &
|
82
|
+
requirement: &70092487169640 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70092487169640
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rake
|
93
|
-
requirement: &
|
93
|
+
requirement: &70092487169160 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ! '>='
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: '0'
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70092487169160
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: rspec
|
104
|
-
requirement: &
|
104
|
+
requirement: &70092487168720 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ! '>='
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: '0'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70092487168720
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: haml
|
115
|
-
requirement: &
|
115
|
+
requirement: &70092487168240 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ! '>='
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: '0'
|
121
121
|
type: :development
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70092487168240
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: slim
|
126
|
-
requirement: &
|
126
|
+
requirement: &70092487167780 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ! '>='
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: '0'
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *70092487167780
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: bundler
|
137
|
-
requirement: &
|
137
|
+
requirement: &70092487167340 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ! '>='
|
@@ -142,7 +142,7 @@ dependencies:
|
|
142
142
|
version: '0'
|
143
143
|
type: :development
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *70092487167340
|
146
146
|
description: a code metric tool for rails codes, written in Ruby.
|
147
147
|
email:
|
148
148
|
- flyerhzm@gmail.com
|
@@ -157,7 +157,6 @@ files:
|
|
157
157
|
- .rvmrc
|
158
158
|
- .travis.yml
|
159
159
|
- Gemfile
|
160
|
-
- Gemfile.lock
|
161
160
|
- Guardfile
|
162
161
|
- MIT_LICENSE
|
163
162
|
- README.md
|
@@ -170,7 +169,6 @@ files:
|
|
170
169
|
- lib/rails_best_practices/command.rb
|
171
170
|
- lib/rails_best_practices/core.rb
|
172
171
|
- lib/rails_best_practices/core/check.rb
|
173
|
-
- lib/rails_best_practices/core/checking_visitor.rb
|
174
172
|
- lib/rails_best_practices/core/configs.rb
|
175
173
|
- lib/rails_best_practices/core/controllers.rb
|
176
174
|
- lib/rails_best_practices/core/error.rb
|
@@ -182,12 +180,9 @@ files:
|
|
182
180
|
- lib/rails_best_practices/core/model_attributes.rb
|
183
181
|
- lib/rails_best_practices/core/models.rb
|
184
182
|
- lib/rails_best_practices/core/modules.rb
|
185
|
-
- lib/rails_best_practices/core/nil.rb
|
186
183
|
- lib/rails_best_practices/core/routes.rb
|
187
184
|
- lib/rails_best_practices/core/runner.rb
|
188
|
-
- lib/rails_best_practices/core_ext/enumerable.rb
|
189
185
|
- lib/rails_best_practices/core_ext/erubis.rb
|
190
|
-
- lib/rails_best_practices/core_ext/sexp.rb
|
191
186
|
- lib/rails_best_practices/lexicals.rb
|
192
187
|
- lib/rails_best_practices/lexicals/long_line_check.rb
|
193
188
|
- lib/rails_best_practices/lexicals/remove_tab_check.rb
|
@@ -243,7 +238,6 @@ files:
|
|
243
238
|
- spec/fixtures/lib/rails_best_practices/plugins/reviews/not_use_rails_root_review.rb
|
244
239
|
- spec/rails_best_practices/analyzer_spec.rb
|
245
240
|
- spec/rails_best_practices/core/check_spec.rb
|
246
|
-
- spec/rails_best_practices/core/checking_visitor_spec.rb
|
247
241
|
- spec/rails_best_practices/core/configs_spec.rb
|
248
242
|
- spec/rails_best_practices/core/controllers_spec.rb
|
249
243
|
- spec/rails_best_practices/core/error_spec.rb
|
@@ -255,12 +249,9 @@ files:
|
|
255
249
|
- spec/rails_best_practices/core/model_attributes_spec.rb
|
256
250
|
- spec/rails_best_practices/core/models_spec.rb
|
257
251
|
- spec/rails_best_practices/core/modules_spec.rb
|
258
|
-
- spec/rails_best_practices/core/nil_spec.rb
|
259
252
|
- spec/rails_best_practices/core/routes_spec.rb
|
260
253
|
- spec/rails_best_practices/core/runner_spec.rb
|
261
|
-
- spec/rails_best_practices/core_ext/enumerable_spec.rb
|
262
254
|
- spec/rails_best_practices/core_ext/erubis_spec.rb
|
263
|
-
- spec/rails_best_practices/core_ext/sexp_spec.rb
|
264
255
|
- spec/rails_best_practices/lexicals/long_line_check_spec.rb
|
265
256
|
- spec/rails_best_practices/lexicals/remove_tab_check_spec.rb
|
266
257
|
- spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb
|
@@ -325,7 +316,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
325
316
|
version: '0'
|
326
317
|
segments:
|
327
318
|
- 0
|
328
|
-
hash:
|
319
|
+
hash: 3856057083839728963
|
329
320
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
330
321
|
none: false
|
331
322
|
requirements:
|
@@ -342,7 +333,6 @@ test_files:
|
|
342
333
|
- spec/fixtures/lib/rails_best_practices/plugins/reviews/not_use_rails_root_review.rb
|
343
334
|
- spec/rails_best_practices/analyzer_spec.rb
|
344
335
|
- spec/rails_best_practices/core/check_spec.rb
|
345
|
-
- spec/rails_best_practices/core/checking_visitor_spec.rb
|
346
336
|
- spec/rails_best_practices/core/configs_spec.rb
|
347
337
|
- spec/rails_best_practices/core/controllers_spec.rb
|
348
338
|
- spec/rails_best_practices/core/error_spec.rb
|
@@ -354,12 +344,9 @@ test_files:
|
|
354
344
|
- spec/rails_best_practices/core/model_attributes_spec.rb
|
355
345
|
- spec/rails_best_practices/core/models_spec.rb
|
356
346
|
- spec/rails_best_practices/core/modules_spec.rb
|
357
|
-
- spec/rails_best_practices/core/nil_spec.rb
|
358
347
|
- spec/rails_best_practices/core/routes_spec.rb
|
359
348
|
- spec/rails_best_practices/core/runner_spec.rb
|
360
|
-
- spec/rails_best_practices/core_ext/enumerable_spec.rb
|
361
349
|
- spec/rails_best_practices/core_ext/erubis_spec.rb
|
362
|
-
- spec/rails_best_practices/core_ext/sexp_spec.rb
|
363
350
|
- spec/rails_best_practices/lexicals/long_line_check_spec.rb
|
364
351
|
- spec/rails_best_practices/lexicals/remove_tab_check_spec.rb
|
365
352
|
- spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb
|