rails_best_practices 0.3.0 → 0.4.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.
Files changed (44) hide show
  1. data/README.textile +72 -54
  2. data/Rakefile +5 -5
  3. data/VERSION +1 -1
  4. data/identifier +0 -0
  5. data/lib/rails_best_practices/checks/always_add_db_index_check.rb +27 -62
  6. data/lib/rails_best_practices/checks/check.rb +12 -13
  7. data/lib/rails_best_practices/checks/isolate_seed_data_check.rb +7 -20
  8. data/lib/rails_best_practices/checks/keep_finders_on_their_own_model_check.rb +1 -1
  9. data/lib/rails_best_practices/checks/law_of_demeter_check.rb +6 -5
  10. data/lib/rails_best_practices/checks/move_code_into_helper_check.rb +8 -3
  11. data/lib/rails_best_practices/checks/move_code_into_model_check.rb +53 -0
  12. data/lib/rails_best_practices/checks/needless_deep_nesting_check.rb +36 -4
  13. data/lib/rails_best_practices/checks/not_use_default_route_check.rb +3 -2
  14. data/lib/rails_best_practices/checks/overuse_route_customizations_check.rb +23 -10
  15. data/lib/rails_best_practices/checks/replace_instance_variable_with_local_variable_check.rb +1 -1
  16. data/lib/rails_best_practices/checks/{use_filter_check.rb → use_before_filter_check.rb} +9 -7
  17. data/lib/rails_best_practices/checks/use_scope_access_check.rb +1 -1
  18. data/lib/rails_best_practices/checks.rb +2 -4
  19. data/lib/rails_best_practices/command.rb +7 -41
  20. data/lib/rails_best_practices/core/checking_visitor.rb +2 -2
  21. data/lib/rails_best_practices/core/runner.rb +8 -6
  22. data/lib/rails_best_practices/core/visitable_sexp.rb +8 -2
  23. data/lib/rails_best_practices.rb +41 -1
  24. data/rails_best_practices.gemspec +25 -30
  25. data/rails_best_practices.yml +3 -5
  26. data/spec/rails_best_practices/checks/always_add_db_index_check_spec.rb +32 -112
  27. data/spec/rails_best_practices/checks/isolate_seed_data_check_spec.rb +0 -3
  28. data/spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb +33 -1
  29. data/spec/rails_best_practices/checks/law_of_demeter_check_spec.rb +66 -27
  30. data/spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb +2 -2
  31. data/spec/rails_best_practices/checks/move_code_into_model_check_spec.rb +55 -0
  32. data/spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb +55 -21
  33. data/spec/rails_best_practices/checks/not_use_default_route_check_spec.rb +51 -22
  34. data/spec/rails_best_practices/checks/overuse_route_customizations_check_spec.rb +134 -48
  35. data/spec/rails_best_practices/checks/replace_instance_variable_with_local_variable_check_spec.rb +11 -1
  36. data/spec/rails_best_practices/checks/{use_filter_check_spec.rb → use_before_filter_check_spec.rb} +6 -6
  37. data/spec/rails_best_practices/checks/use_scope_access_check_spec.rb +22 -0
  38. metadata +49 -39
  39. data/lib/rails_best_practices/checks/many_to_many_collection_check.rb +0 -12
  40. data/lib/rails_best_practices/checks/nested_model_forms_check.rb +0 -12
  41. data/lib/rails_best_practices/checks/use_model_callback_check.rb +0 -12
  42. data/spec/rails_best_practices/checks/many_to_many_collection_check_spec.rb +0 -11
  43. data/spec/rails_best_practices/checks/nested_model_forms_check_spec.rb +0 -11
  44. data/spec/rails_best_practices/checks/use_model_callback_check_spec.rb +0 -11
@@ -1,11 +1,11 @@
1
1
  require File.join(File.dirname(__FILE__) + '/../../spec_helper')
2
2
 
3
- describe RailsBestPractices::Checks::UseFilterCheck do
3
+ describe RailsBestPractices::Checks::UseBeforeFilterCheck do
4
4
  before(:each) do
5
- @runner = RailsBestPractices::Core::Runner.new(RailsBestPractices::Checks::UseFilterCheck.new)
5
+ @runner = RailsBestPractices::Core::Runner.new(RailsBestPractices::Checks::UseBeforeFilterCheck.new)
6
6
  end
7
7
 
8
- it "should use filter" do
8
+ it "should use before_filter" do
9
9
  content = <<-EOF
10
10
  class PostsController < ApplicationController
11
11
 
@@ -32,10 +32,10 @@ describe RailsBestPractices::Checks::UseFilterCheck do
32
32
  @runner.check('app/controllers/posts_controller.rb', content)
33
33
  errors = @runner.errors
34
34
  errors.should_not be_empty
35
- errors[0].to_s.should == "app/controllers/posts_controller.rb:1 - use filter for @post = current_user.posts.find(params[:id]) in show,edit,update,destroy"
35
+ errors[0].to_s.should == "app/controllers/posts_controller.rb:3,7,11,16 - use before_filter for show,edit,update,destroy"
36
36
  end
37
37
 
38
- it "should not use filter" do
38
+ it "should not use before_filter" do
39
39
  content = <<-EOF
40
40
  class PostsController < ApplicationController
41
41
  before_filter :find_post, :only => [:show, :edit, :update, :destroy]
@@ -60,7 +60,7 @@ describe RailsBestPractices::Checks::UseFilterCheck do
60
60
  errors.should be_empty
61
61
  end
62
62
 
63
- it "should not use filter by nil" do
63
+ it "should not use before_filter by nil" do
64
64
  content = <<-EOF
65
65
  class PostsController < ApplicationController
66
66
 
@@ -167,5 +167,27 @@ describe RailsBestPractices::Checks::UseScopeAccessCheck do
167
167
  errors.should_not be_empty
168
168
  errors[0].to_s.should == "app/controllers/posts_controller.rb:6 - use scope access"
169
169
  end
170
+
171
+ it "should no error in use_scope_access_check" do
172
+ content = <<-EOF
173
+ class CommentsController < ApplicationController
174
+
175
+ def add_comment
176
+ @current_user = User.find_by_id(session[:user_id])
177
+ @id = params[:post_id]
178
+ @error = ""
179
+ if (@text = params[:text]) == ""
180
+ @error = "Please enter a comment!"
181
+ else
182
+ @comment = Comment.create_object(@text, @id, @current_user.id)
183
+ end
184
+ unless @comment
185
+ @error = "Comment could not be saved."
186
+ end
187
+ end
188
+ end
189
+ EOF
190
+ @runner.check('app/controllers/comments_controller.rb', content)
191
+ end
170
192
  end
171
193
  end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_best_practices
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 4
8
+ - 0
9
+ version: 0.4.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - Richard Huang
@@ -9,30 +14,38 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-11-10 00:00:00 +08:00
17
+ date: 2010-08-15 00:00:00 +08:00
13
18
  default_executable: rails_best_practices
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: ruby_parser
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 2
29
+ - 0
30
+ - 4
23
31
  version: 2.0.4
24
- version:
32
+ type: :runtime
33
+ version_requirements: *id001
25
34
  - !ruby/object:Gem::Dependency
26
35
  name: ruby2ruby
27
- type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
30
38
  requirements:
31
39
  - - ">="
32
40
  - !ruby/object:Gem::Version
41
+ segments:
42
+ - 1
43
+ - 2
44
+ - 4
33
45
  version: 1.2.4
34
- version:
35
- description: check rails files according to ihower's presentation 'rails best practices'
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ description: a code metric tool for rails codes.
36
49
  email: flyerhzm@gmail.com
37
50
  executables:
38
51
  - rails_best_practices
@@ -48,6 +61,7 @@ files:
48
61
  - Rakefile
49
62
  - VERSION
50
63
  - bin/rails_best_practices
64
+ - identifier
51
65
  - lib/rails_best_practices.rb
52
66
  - lib/rails_best_practices/checks.rb
53
67
  - lib/rails_best_practices/checks/add_model_virtual_attribute_check.rb
@@ -56,20 +70,18 @@ files:
56
70
  - lib/rails_best_practices/checks/isolate_seed_data_check.rb
57
71
  - lib/rails_best_practices/checks/keep_finders_on_their_own_model_check.rb
58
72
  - lib/rails_best_practices/checks/law_of_demeter_check.rb
59
- - lib/rails_best_practices/checks/many_to_many_collection_check.rb
60
73
  - lib/rails_best_practices/checks/move_code_into_controller_check.rb
61
74
  - lib/rails_best_practices/checks/move_code_into_helper_check.rb
75
+ - lib/rails_best_practices/checks/move_code_into_model_check.rb
62
76
  - lib/rails_best_practices/checks/move_finder_to_named_scope_check.rb
63
77
  - lib/rails_best_practices/checks/move_model_logic_into_model_check.rb
64
78
  - lib/rails_best_practices/checks/needless_deep_nesting_check.rb
65
- - lib/rails_best_practices/checks/nested_model_forms_check.rb
66
79
  - lib/rails_best_practices/checks/not_use_default_route_check.rb
67
80
  - lib/rails_best_practices/checks/overuse_route_customizations_check.rb
68
81
  - lib/rails_best_practices/checks/replace_complex_creation_with_factory_method_check.rb
69
82
  - lib/rails_best_practices/checks/replace_instance_variable_with_local_variable_check.rb
70
- - lib/rails_best_practices/checks/use_filter_check.rb
83
+ - lib/rails_best_practices/checks/use_before_filter_check.rb
71
84
  - lib/rails_best_practices/checks/use_model_association_check.rb
72
- - lib/rails_best_practices/checks/use_model_callback_check.rb
73
85
  - lib/rails_best_practices/checks/use_observer_check.rb
74
86
  - lib/rails_best_practices/checks/use_scope_access_check.rb
75
87
  - lib/rails_best_practices/command.rb
@@ -86,26 +98,24 @@ files:
86
98
  - spec/rails_best_practices/checks/isolate_seed_data_check_spec.rb
87
99
  - spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb
88
100
  - spec/rails_best_practices/checks/law_of_demeter_check_spec.rb
89
- - spec/rails_best_practices/checks/many_to_many_collection_check_spec.rb
90
101
  - spec/rails_best_practices/checks/move_code_into_controller_check_spec.rb
91
102
  - spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb
103
+ - spec/rails_best_practices/checks/move_code_into_model_check_spec.rb
92
104
  - spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb
93
105
  - spec/rails_best_practices/checks/move_model_logic_into_model_check_spec.rb
94
106
  - spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb
95
- - spec/rails_best_practices/checks/nested_model_forms_check_spec.rb
96
107
  - spec/rails_best_practices/checks/not_use_default_route_check_spec.rb
97
108
  - spec/rails_best_practices/checks/overuse_route_customizations_check_spec.rb
98
109
  - spec/rails_best_practices/checks/replace_complex_creation_with_factory_method_check_spec.rb
99
110
  - spec/rails_best_practices/checks/replace_instance_variable_with_local_variable_check_spec.rb
100
- - spec/rails_best_practices/checks/use_filter_check_spec.rb
111
+ - spec/rails_best_practices/checks/use_before_filter_check_spec.rb
101
112
  - spec/rails_best_practices/checks/use_model_association_check_spec.rb
102
- - spec/rails_best_practices/checks/use_model_callback_check_spec.rb
103
113
  - spec/rails_best_practices/checks/use_observer_check_spec.rb
104
114
  - spec/rails_best_practices/checks/use_scope_access_check_spec.rb
105
115
  - spec/spec.opts
106
116
  - spec/spec_helper.rb
107
117
  has_rdoc: true
108
- homepage: http://github.com/flyerhzm/rails_best_practices
118
+ homepage: http://rails-bestpractices.com
109
119
  licenses: []
110
120
 
111
121
  post_install_message:
@@ -117,41 +127,41 @@ required_ruby_version: !ruby/object:Gem::Requirement
117
127
  requirements:
118
128
  - - ">="
119
129
  - !ruby/object:Gem::Version
130
+ segments:
131
+ - 0
120
132
  version: "0"
121
- version:
122
133
  required_rubygems_version: !ruby/object:Gem::Requirement
123
134
  requirements:
124
135
  - - ">="
125
136
  - !ruby/object:Gem::Version
137
+ segments:
138
+ - 0
126
139
  version: "0"
127
- version:
128
140
  requirements: []
129
141
 
130
142
  rubyforge_project:
131
- rubygems_version: 1.3.5
143
+ rubygems_version: 1.3.6
132
144
  signing_key:
133
145
  specification_version: 3
134
- summary: check rails files according to ihower's presentation 'rails best practices'
146
+ summary: a code metric tool for rails codes.
135
147
  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
148
  - 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
149
  - spec/rails_best_practices/checks/move_model_logic_into_model_check_spec.rb
146
- - spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb
147
- - spec/rails_best_practices/checks/nested_model_forms_check_spec.rb
148
- - spec/rails_best_practices/checks/not_use_default_route_check_spec.rb
150
+ - spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb
151
+ - spec/rails_best_practices/checks/move_code_into_controller_check_spec.rb
152
+ - spec/rails_best_practices/checks/use_observer_check_spec.rb
149
153
  - spec/rails_best_practices/checks/overuse_route_customizations_check_spec.rb
154
+ - spec/rails_best_practices/checks/always_add_db_index_check_spec.rb
155
+ - spec/rails_best_practices/checks/use_before_filter_check_spec.rb
156
+ - spec/rails_best_practices/checks/law_of_demeter_check_spec.rb
157
+ - spec/rails_best_practices/checks/use_scope_access_check_spec.rb
150
158
  - spec/rails_best_practices/checks/replace_complex_creation_with_factory_method_check_spec.rb
159
+ - spec/rails_best_practices/checks/not_use_default_route_check_spec.rb
160
+ - spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb
161
+ - spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb
151
162
  - 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
163
  - spec/rails_best_practices/checks/use_model_association_check_spec.rb
154
- - spec/rails_best_practices/checks/use_model_callback_check_spec.rb
155
- - spec/rails_best_practices/checks/use_observer_check_spec.rb
156
- - spec/rails_best_practices/checks/use_scope_access_check_spec.rb
164
+ - spec/rails_best_practices/checks/move_code_into_model_check_spec.rb
165
+ - spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb
166
+ - spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb
157
167
  - spec/spec_helper.rb
@@ -1,12 +0,0 @@
1
- require 'rails_best_practices/checks/check'
2
-
3
- module RailsBestPractices
4
- module Checks
5
- # TODO: unknown how to realize it.
6
- class ManyToManyCollectionCheck < Check
7
-
8
- def interesting_nodes
9
- end
10
- end
11
- end
12
- end
@@ -1,12 +0,0 @@
1
- require 'rails_best_practices/checks/check'
2
-
3
- module RailsBestPractices
4
- module Checks
5
- # TODO: unknown how to realize it.
6
- class NestedModelFormsCheck < Check
7
-
8
- def interesting_nodes
9
- end
10
- end
11
- end
12
- end
@@ -1,12 +0,0 @@
1
- require 'rails_best_practices/checks/check'
2
-
3
- module RailsBestPractices
4
- module Checks
5
- # TODO: unknown how to realize it.
6
- class UseModelCallbackCheck < Check
7
-
8
- def interesting_nodes
9
- end
10
- end
11
- end
12
- end
@@ -1,11 +0,0 @@
1
- require File.join(File.dirname(__FILE__) + '/../../spec_helper')
2
-
3
- describe RailsBestPractices::Checks::ManyToManyCollectionCheck do
4
- before(:each) do
5
- @runner = RailsBestPractices::Core::Runner.new(RailsBestPractices::Checks::ManyToManyCollectionCheck.new)
6
- end
7
-
8
- it "should many to many collection check" do
9
- pending
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- require File.join(File.dirname(__FILE__) + '/../../spec_helper')
2
-
3
- describe RailsBestPractices::Checks::NestedModelFormsCheck do
4
- before(:each) do
5
- @runner = RailsBestPractices::Core::Runner.new(RailsBestPractices::Checks::NestedModelFormsCheck.new)
6
- end
7
-
8
- it "should nested model form check" do
9
- pending
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- require File.join(File.dirname(__FILE__) + '/../../spec_helper')
2
-
3
- describe RailsBestPractices::Checks::UseModelCallbackCheck do
4
- before(:each) do
5
- @runner = RailsBestPractices::Core::Runner.new(RailsBestPractices::Checks::UseModelCallbackCheck.new)
6
- end
7
-
8
- it "should use model callback check" do
9
- pending
10
- end
11
- end