rails_best_practices 1.10.1 → 1.11.0
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.
- 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
|