rails_best_practices 0.3.0 → 0.3.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.
- data/README.textile +14 -1
- data/VERSION +1 -1
- data/lib/rails_best_practices/checks/check.rb +2 -2
- data/lib/rails_best_practices/checks/replace_instance_variable_with_local_variable_check.rb +1 -1
- data/lib/rails_best_practices/command.rb +1 -1
- data/lib/rails_best_practices/core/runner.rb +4 -0
- data/rails_best_practices.gemspec +18 -18
- data/spec/rails_best_practices/checks/law_of_demeter_check_spec.rb +12 -0
- data/spec/rails_best_practices/checks/replace_instance_variable_with_local_variable_check_spec.rb +11 -1
- metadata +17 -17
data/README.textile
CHANGED
@@ -30,6 +30,19 @@ rails_best_practices .
|
|
30
30
|
|
31
31
|
notice the period at the end, it can be the relative or absolute path of your rails app.
|
32
32
|
|
33
|
+
And default rails_best_practices will do parse codes in vendor, spec, test and stories directories. If you need, see the command options:
|
34
|
+
|
35
|
+
<pre><code>
|
36
|
+
$ rails_best_practices -h
|
37
|
+
Usage: rails_best_practices [options]
|
38
|
+
-d, --debug Debug mode
|
39
|
+
--vendor include vendor files
|
40
|
+
--spec include spec files
|
41
|
+
--test include test files
|
42
|
+
--stories include stories files
|
43
|
+
-h, --help Show this message
|
44
|
+
</code></pre>
|
45
|
+
|
33
46
|
*************************************************
|
34
47
|
|
35
48
|
h2. Customize Configuration
|
@@ -97,7 +110,7 @@ h2. Progress
|
|
97
110
|
|
98
111
|
* Lesson 5. Controller
|
99
112
|
## [-Use before_filter-]
|
100
|
-
## DRY Controller
|
113
|
+
## [-DRY Controller-] # not implement, use http://github.com/josevalim/inherited_resources
|
101
114
|
|
102
115
|
* Lesson 6. View
|
103
116
|
## [-Move code into controller-]
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
@@ -8,8 +8,8 @@ module RailsBestPractices
|
|
8
8
|
CONTROLLER_FILES = /_controller.rb$/
|
9
9
|
MIGRATION_FILES = /db\/migrate\/.*rb/
|
10
10
|
MODLE_FILES = /models\/.*rb/
|
11
|
-
VIEW_FILES = /views\/.*erb/
|
12
|
-
PARTIAL_VIEW_FILES = /views\/.*\/_.*erb/
|
11
|
+
VIEW_FILES = /views\/.*(erb|haml)/
|
12
|
+
PARTIAL_VIEW_FILES = /views\/.*\/_.*(erb|haml)/
|
13
13
|
|
14
14
|
def initialize
|
15
15
|
@errors = []
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'ruby_parser'
|
3
3
|
require 'erb'
|
4
|
+
require 'haml'
|
4
5
|
require 'yaml'
|
5
6
|
|
6
7
|
module RailsBestPractices
|
@@ -29,6 +30,9 @@ module RailsBestPractices
|
|
29
30
|
if filename =~ /.*erb/
|
30
31
|
content = ERB.new(content).src
|
31
32
|
end
|
33
|
+
if filename =~ /.*haml/
|
34
|
+
content = Haml::Engine.new(content).precompiled
|
35
|
+
end
|
32
36
|
node = parse(filename, content)
|
33
37
|
node.accept(@checker) if node
|
34
38
|
end
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rails_best_practices}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Richard Huang"]
|
12
|
-
s.date = %q{2009-11-
|
12
|
+
s.date = %q{2009-11-13}
|
13
13
|
s.default_executable = %q{rails_best_practices}
|
14
14
|
s.description = %q{check rails files according to ihower's presentation 'rails best practices'}
|
15
15
|
s.email = %q{flyerhzm@gmail.com}
|
@@ -88,27 +88,27 @@ Gem::Specification.new do |s|
|
|
88
88
|
s.rubygems_version = %q{1.3.5}
|
89
89
|
s.summary = %q{check rails files according to ihower's presentation 'rails best practices'}
|
90
90
|
s.test_files = [
|
91
|
-
"spec/rails_best_practices/checks/
|
92
|
-
"spec/rails_best_practices/checks/always_add_db_index_check_spec.rb",
|
93
|
-
"spec/rails_best_practices/checks/isolate_seed_data_check_spec.rb",
|
94
|
-
"spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb",
|
95
|
-
"spec/rails_best_practices/checks/law_of_demeter_check_spec.rb",
|
96
|
-
"spec/rails_best_practices/checks/many_to_many_collection_check_spec.rb",
|
97
|
-
"spec/rails_best_practices/checks/move_code_into_controller_check_spec.rb",
|
98
|
-
"spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb",
|
99
|
-
"spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb",
|
91
|
+
"spec/rails_best_practices/checks/isolate_seed_data_check_spec.rb",
|
100
92
|
"spec/rails_best_practices/checks/move_model_logic_into_model_check_spec.rb",
|
101
|
-
"spec/rails_best_practices/checks/
|
102
|
-
"spec/rails_best_practices/checks/
|
103
|
-
"spec/rails_best_practices/checks/
|
93
|
+
"spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb",
|
94
|
+
"spec/rails_best_practices/checks/move_code_into_controller_check_spec.rb",
|
95
|
+
"spec/rails_best_practices/checks/use_observer_check_spec.rb",
|
104
96
|
"spec/rails_best_practices/checks/overuse_route_customizations_check_spec.rb",
|
97
|
+
"spec/rails_best_practices/checks/nested_model_forms_check_spec.rb",
|
98
|
+
"spec/rails_best_practices/checks/use_filter_check_spec.rb",
|
99
|
+
"spec/rails_best_practices/checks/always_add_db_index_check_spec.rb",
|
100
|
+
"spec/rails_best_practices/checks/many_to_many_collection_check_spec.rb",
|
101
|
+
"spec/rails_best_practices/checks/law_of_demeter_check_spec.rb",
|
102
|
+
"spec/rails_best_practices/checks/use_scope_access_check_spec.rb",
|
105
103
|
"spec/rails_best_practices/checks/replace_complex_creation_with_factory_method_check_spec.rb",
|
104
|
+
"spec/rails_best_practices/checks/not_use_default_route_check_spec.rb",
|
105
|
+
"spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb",
|
106
|
+
"spec/rails_best_practices/checks/use_model_callback_check_spec.rb",
|
107
|
+
"spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb",
|
106
108
|
"spec/rails_best_practices/checks/replace_instance_variable_with_local_variable_check_spec.rb",
|
107
|
-
"spec/rails_best_practices/checks/use_filter_check_spec.rb",
|
108
109
|
"spec/rails_best_practices/checks/use_model_association_check_spec.rb",
|
109
|
-
"spec/rails_best_practices/checks/
|
110
|
-
"spec/rails_best_practices/checks/
|
111
|
-
"spec/rails_best_practices/checks/use_scope_access_check_spec.rb",
|
110
|
+
"spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb",
|
111
|
+
"spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb",
|
112
112
|
"spec/spec_helper.rb"
|
113
113
|
]
|
114
114
|
|
@@ -24,6 +24,18 @@ describe RailsBestPractices::Checks::LawOfDemeterCheck do
|
|
24
24
|
errors[0].to_s.should == "app/views/invoices/show.html.erb:1 - law of demeter"
|
25
25
|
end
|
26
26
|
|
27
|
+
it "should law of demeter" do
|
28
|
+
content = <<-EOF
|
29
|
+
= @invoice.user.name
|
30
|
+
= @invoice.user.address
|
31
|
+
= @invoice.user.cellphone
|
32
|
+
EOF
|
33
|
+
@runner.check('app/views/invoices/show.html.haml', content)
|
34
|
+
errors = @runner.errors
|
35
|
+
errors.should_not be_empty
|
36
|
+
errors[0].to_s.should == "app/views/invoices/show.html.haml:1 - law of demeter"
|
37
|
+
end
|
38
|
+
|
27
39
|
it "should no law of demeter" do
|
28
40
|
content = <<-EOF
|
29
41
|
<%= @invoice.user_name %>
|
data/spec/rails_best_practices/checks/replace_instance_variable_with_local_variable_check_spec.rb
CHANGED
@@ -15,6 +15,16 @@ describe RailsBestPractices::Checks::ReplaceInstanceVariableWithLocalVariableChe
|
|
15
15
|
errors[0].to_s.should == "app/views/posts/_post.html.erb:1 - replace instance variable with local variable"
|
16
16
|
end
|
17
17
|
|
18
|
+
it "should replace instance variable with local varialbe in haml file" do
|
19
|
+
content = <<-EOF
|
20
|
+
= @post.title
|
21
|
+
EOF
|
22
|
+
@runner.check('app/views/posts/_post.html.haml', content)
|
23
|
+
errors = @runner.errors
|
24
|
+
errors.should_not be_empty
|
25
|
+
errors[0].to_s.should == "app/views/posts/_post.html.haml:1 - replace instance variable with local variable"
|
26
|
+
end
|
27
|
+
|
18
28
|
it "should not replace instance variable with local varialbe" do
|
19
29
|
content = <<-EOF
|
20
30
|
<%= post.title %>
|
@@ -23,4 +33,4 @@ describe RailsBestPractices::Checks::ReplaceInstanceVariableWithLocalVariableChe
|
|
23
33
|
errors = @runner.errors
|
24
34
|
errors.should be_empty
|
25
35
|
end
|
26
|
-
end
|
36
|
+
end
|
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: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Huang
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-11-
|
12
|
+
date: 2009-11-13 00:00:00 +08:00
|
13
13
|
default_executable: rails_best_practices
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -133,25 +133,25 @@ signing_key:
|
|
133
133
|
specification_version: 3
|
134
134
|
summary: check rails files according to ihower's presentation 'rails best practices'
|
135
135
|
test_files:
|
136
|
-
- spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb
|
137
|
-
- spec/rails_best_practices/checks/always_add_db_index_check_spec.rb
|
138
136
|
- spec/rails_best_practices/checks/isolate_seed_data_check_spec.rb
|
139
|
-
- spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb
|
140
|
-
- spec/rails_best_practices/checks/law_of_demeter_check_spec.rb
|
141
|
-
- spec/rails_best_practices/checks/many_to_many_collection_check_spec.rb
|
142
|
-
- spec/rails_best_practices/checks/move_code_into_controller_check_spec.rb
|
143
|
-
- spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb
|
144
|
-
- spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb
|
145
137
|
- spec/rails_best_practices/checks/move_model_logic_into_model_check_spec.rb
|
146
|
-
- spec/rails_best_practices/checks/
|
147
|
-
- spec/rails_best_practices/checks/
|
148
|
-
- spec/rails_best_practices/checks/
|
138
|
+
- spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb
|
139
|
+
- spec/rails_best_practices/checks/move_code_into_controller_check_spec.rb
|
140
|
+
- spec/rails_best_practices/checks/use_observer_check_spec.rb
|
149
141
|
- spec/rails_best_practices/checks/overuse_route_customizations_check_spec.rb
|
142
|
+
- spec/rails_best_practices/checks/nested_model_forms_check_spec.rb
|
143
|
+
- spec/rails_best_practices/checks/use_filter_check_spec.rb
|
144
|
+
- spec/rails_best_practices/checks/always_add_db_index_check_spec.rb
|
145
|
+
- spec/rails_best_practices/checks/many_to_many_collection_check_spec.rb
|
146
|
+
- spec/rails_best_practices/checks/law_of_demeter_check_spec.rb
|
147
|
+
- spec/rails_best_practices/checks/use_scope_access_check_spec.rb
|
150
148
|
- spec/rails_best_practices/checks/replace_complex_creation_with_factory_method_check_spec.rb
|
149
|
+
- spec/rails_best_practices/checks/not_use_default_route_check_spec.rb
|
150
|
+
- spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb
|
151
|
+
- spec/rails_best_practices/checks/use_model_callback_check_spec.rb
|
152
|
+
- spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb
|
151
153
|
- spec/rails_best_practices/checks/replace_instance_variable_with_local_variable_check_spec.rb
|
152
|
-
- spec/rails_best_practices/checks/use_filter_check_spec.rb
|
153
154
|
- spec/rails_best_practices/checks/use_model_association_check_spec.rb
|
154
|
-
- spec/rails_best_practices/checks/
|
155
|
-
- spec/rails_best_practices/checks/
|
156
|
-
- spec/rails_best_practices/checks/use_scope_access_check_spec.rb
|
155
|
+
- spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb
|
156
|
+
- spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb
|
157
157
|
- spec/spec_helper.rb
|