rails_best_practices 0.6.1 → 0.6.5

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 (46) hide show
  1. data/.gitignore +12 -0
  2. data/.rspec.example +2 -0
  3. data/.rvmrc.example +2 -0
  4. data/.watchr +65 -0
  5. data/.watchr.example +65 -0
  6. data/Gemfile +3 -0
  7. data/README.md +6 -0
  8. data/Rakefile +45 -0
  9. data/assets/result.html.haml +53 -0
  10. data/lib/rails_best_practices.rb +30 -11
  11. data/lib/rails_best_practices/checks/check.rb +10 -10
  12. data/lib/rails_best_practices/command.rb +9 -0
  13. data/lib/rails_best_practices/core/visitable_sexp.rb +9 -10
  14. data/lib/rails_best_practices/version.rb +1 -1
  15. data/rails_best_practices.gemspec +32 -0
  16. data/rubies_test.sh +10 -0
  17. data/spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb +113 -0
  18. data/spec/rails_best_practices/checks/always_add_db_index_check_spec.rb +172 -0
  19. data/spec/rails_best_practices/checks/check_spec.rb +57 -0
  20. data/spec/rails_best_practices/checks/dry_bundler_in_capistrano_check_spec.rb +39 -0
  21. data/spec/rails_best_practices/checks/isolate_seed_data_check_spec.rb +105 -0
  22. data/spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb +103 -0
  23. data/spec/rails_best_practices/checks/law_of_demeter_check_spec.rb +101 -0
  24. data/spec/rails_best_practices/checks/move_code_into_controller_check_spec.rb +33 -0
  25. data/spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb +28 -0
  26. data/spec/rails_best_practices/checks/move_code_into_model_check_spec.rb +55 -0
  27. data/spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb +82 -0
  28. data/spec/rails_best_practices/checks/move_model_logic_into_model_check_spec.rb +49 -0
  29. data/spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb +140 -0
  30. data/spec/rails_best_practices/checks/not_use_default_route_check_spec.rb +63 -0
  31. data/spec/rails_best_practices/checks/overuse_route_customizations_check_spec.rb +159 -0
  32. data/spec/rails_best_practices/checks/replace_complex_creation_with_factory_method_check_spec.rb +76 -0
  33. data/spec/rails_best_practices/checks/replace_instance_variable_with_local_variable_check_spec.rb +36 -0
  34. data/spec/rails_best_practices/checks/use_before_filter_check_spec.rb +85 -0
  35. data/spec/rails_best_practices/checks/use_model_association_check_spec.rb +71 -0
  36. data/spec/rails_best_practices/checks/use_observer_check_spec.rb +155 -0
  37. data/spec/rails_best_practices/checks/use_query_attribute_check_spec.rb +192 -0
  38. data/spec/rails_best_practices/checks/use_say_with_time_in_migrations_check_spec.rb +113 -0
  39. data/spec/rails_best_practices/checks/use_scope_access_check_spec.rb +193 -0
  40. data/spec/rails_best_practices/core/error_spec.rb +7 -0
  41. data/spec/rails_best_practices/core/visitable_sexp_spec.rb +259 -0
  42. data/spec/rails_best_practices/core_ext/enumerable_spec.rb +7 -0
  43. data/spec/rails_best_practices/core_ext/nil_class_spec.rb +11 -0
  44. data/spec/rails_best_practices_spec.rb +44 -0
  45. data/spec/spec_helper.rb +4 -0
  46. metadata +114 -32
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe Enumerable do
4
+ it "should get duplications in enumerable" do
5
+ ["hello", "world", "hello", "java"].dups.should == ["hello"]
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe NilClass do
4
+ it "should return nil when calling undefined methods on nil" do
5
+ nil.undefined.should == nil
6
+ end
7
+
8
+ it "should do not return nil when calling exist methods" do
9
+ nil.nil?.should be_true
10
+ end
11
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ describe RailsBestPractices do
4
+
5
+ describe "expand_dirs_to_files" do
6
+ require 'find'
7
+ it "should expand all files in spec directory" do
8
+ dir = File.dirname(__FILE__)
9
+ RailsBestPractices.expand_dirs_to_files(dir).should be_include(dir + '/rails_best_practices_spec.rb')
10
+ RailsBestPractices.expand_dirs_to_files(dir).should be_include(dir + '/rails_best_practices/core/visitable_sexp_spec.rb')
11
+ RailsBestPractices.expand_dirs_to_files(dir).should be_include(dir + '/rails_best_practices/checks/check_spec.rb')
12
+ end
13
+ end
14
+
15
+ describe "file_sort" do
16
+ it "should get models first, then mailers" do
17
+ files = ["app/controllers/users_controller.rb", "app/mailers/user_mailer.rb", "app/models/user.rb", "app/views/users/index.html.haml", "lib/user.rb"]
18
+ RailsBestPractices.file_sort(files).should == ["app/models/user.rb", "app/mailers/user_mailer.rb", "app/controllers/users_controller.rb", "app/views/users/index.html.haml", "lib/user.rb"]
19
+ end
20
+ end
21
+
22
+ describe "file_ignore" do
23
+ it "should ignore lib" do
24
+ files = ["app/controllers/users_controller.rb", "app/mailers/user_mailer.rb", "app/models/user.rb", "app/views/users/index.html.haml", "lib/user.rb"]
25
+ RailsBestPractices.file_ignore(files, 'lib/').should == ["app/controllers/users_controller.rb", "app/mailers/user_mailer.rb", "app/models/user.rb", "app/views/users/index.html.haml"]
26
+ end
27
+ end
28
+
29
+ describe "output_errors" do
30
+ check1 = RailsBestPractices::Checks::LawOfDemeterCheck.new
31
+ check2 = RailsBestPractices::Checks::UseQueryAttributeCheck.new
32
+ runner = RailsBestPractices::Core::Runner.new(check1, check2)
33
+ check1.add_error "law of demeter", "app/models/user.rb", 10
34
+ check2.add_error "use query attribute", "app/models/post.rb", 100
35
+ RailsBestPractices.runner = runner
36
+
37
+ $origin_stdout = $stdout
38
+ $stdout = StringIO.new
39
+ RailsBestPractices.output_errors
40
+ result = $stdout.string
41
+ $stdout = $origin_stdout
42
+ result.should == ["app/models/user.rb:10 - law of demeter".red, "app/models/post.rb:100 - use query attribute".red, "\nPlease go to http://rails-bestpractices.com to see more useful Rails Best Practices.".green, "\nFound 2 errors.".red].join("\n") + "\n"
43
+ end
44
+ end
@@ -0,0 +1,4 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
+
4
+ require 'rails_best_practices'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_best_practices
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 13
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 1
10
- version: 0.6.1
9
+ - 5
10
+ version: 0.6.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Richard Huang
@@ -15,8 +15,8 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-24 00:00:00 +08:00
19
- default_executable: rails_best_practices
18
+ date: 2011-01-04 00:00:00 +08:00
19
+ default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  requirement: &id001 !ruby/object:Gem::Requirement
@@ -85,13 +85,15 @@ dependencies:
85
85
  requirement: &id005 !ruby/object:Gem::Requirement
86
86
  none: false
87
87
  requirements:
88
- - - ">="
88
+ - - ~>
89
89
  - !ruby/object:Gem::Version
90
- hash: 3
90
+ hash: 35
91
91
  segments:
92
+ - 3
92
93
  - 0
93
- version: "0"
94
- name: i18n
94
+ - 18
95
+ version: 3.0.18
96
+ name: haml
95
97
  prerelease: false
96
98
  type: :runtime
97
99
  version_requirements: *id005
@@ -105,7 +107,7 @@ dependencies:
105
107
  segments:
106
108
  - 0
107
109
  version: "0"
108
- name: activesupport
110
+ name: i18n
109
111
  prerelease: false
110
112
  type: :runtime
111
113
  version_requirements: *id006
@@ -113,17 +115,15 @@ dependencies:
113
115
  requirement: &id007 !ruby/object:Gem::Requirement
114
116
  none: false
115
117
  requirements:
116
- - - ~>
118
+ - - ">="
117
119
  - !ruby/object:Gem::Version
118
- hash: 13
120
+ hash: 3
119
121
  segments:
120
- - 2
121
122
  - 0
122
- - 1
123
- version: 2.0.1
124
- name: rspec
123
+ version: "0"
124
+ name: activesupport
125
125
  prerelease: false
126
- type: :development
126
+ type: :runtime
127
127
  version_requirements: *id007
128
128
  - !ruby/object:Gem::Dependency
129
129
  requirement: &id008 !ruby/object:Gem::Requirement
@@ -131,13 +131,13 @@ dependencies:
131
131
  requirements:
132
132
  - - ~>
133
133
  - !ruby/object:Gem::Version
134
- hash: 35
134
+ hash: 13
135
135
  segments:
136
- - 3
136
+ - 2
137
137
  - 0
138
- - 18
139
- version: 3.0.18
140
- name: haml
138
+ - 1
139
+ version: 2.0.1
140
+ name: rspec
141
141
  prerelease: false
142
142
  type: :development
143
143
  version_requirements: *id008
@@ -156,6 +156,22 @@ dependencies:
156
156
  prerelease: false
157
157
  type: :development
158
158
  version_requirements: *id009
159
+ - !ruby/object:Gem::Dependency
160
+ requirement: &id010 !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ hash: 23
166
+ segments:
167
+ - 1
168
+ - 0
169
+ - 0
170
+ version: 1.0.0
171
+ name: bundler
172
+ prerelease: false
173
+ type: :development
174
+ version_requirements: *id010
159
175
  description: a code metric tool for rails codes, written in Ruby.
160
176
  email:
161
177
  - flyerhzm@gmail.com
@@ -163,10 +179,22 @@ executables:
163
179
  - rails_best_practices
164
180
  extensions: []
165
181
 
166
- extra_rdoc_files:
182
+ extra_rdoc_files: []
183
+
184
+ files:
185
+ - .gitignore
186
+ - .rspec.example
187
+ - .rvmrc.example
188
+ - .watchr
189
+ - .watchr.example
190
+ - Gemfile
167
191
  - MIT_LICENSE
168
192
  - README.md
169
- files:
193
+ - Rakefile
194
+ - assets/result.html.haml
195
+ - bin/rails_best_practices
196
+ - lib/rails_best_practices.rb
197
+ - lib/rails_best_practices/checks.rb
170
198
  - lib/rails_best_practices/checks/add_model_virtual_attribute_check.rb
171
199
  - lib/rails_best_practices/checks/always_add_db_index_check.rb
172
200
  - lib/rails_best_practices/checks/check.rb
@@ -190,21 +218,47 @@ files:
190
218
  - lib/rails_best_practices/checks/use_query_attribute_check.rb
191
219
  - lib/rails_best_practices/checks/use_say_with_time_in_migrations_check.rb
192
220
  - lib/rails_best_practices/checks/use_scope_access_check.rb
193
- - lib/rails_best_practices/checks.rb
194
221
  - lib/rails_best_practices/command.rb
222
+ - lib/rails_best_practices/core.rb
195
223
  - lib/rails_best_practices/core/checking_visitor.rb
196
224
  - lib/rails_best_practices/core/error.rb
197
225
  - lib/rails_best_practices/core/runner.rb
198
226
  - lib/rails_best_practices/core/visitable_sexp.rb
199
- - lib/rails_best_practices/core.rb
200
227
  - lib/rails_best_practices/core_ext/enumerable.rb
201
228
  - lib/rails_best_practices/core_ext/nil_class.rb
202
229
  - lib/rails_best_practices/version.rb
203
- - lib/rails_best_practices.rb
230
+ - rails_best_practices.gemspec
204
231
  - rails_best_practices.yml
205
- - MIT_LICENSE
206
- - README.md
207
- - bin/rails_best_practices
232
+ - rubies_test.sh
233
+ - spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb
234
+ - spec/rails_best_practices/checks/always_add_db_index_check_spec.rb
235
+ - spec/rails_best_practices/checks/check_spec.rb
236
+ - spec/rails_best_practices/checks/dry_bundler_in_capistrano_check_spec.rb
237
+ - spec/rails_best_practices/checks/isolate_seed_data_check_spec.rb
238
+ - spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb
239
+ - spec/rails_best_practices/checks/law_of_demeter_check_spec.rb
240
+ - spec/rails_best_practices/checks/move_code_into_controller_check_spec.rb
241
+ - spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb
242
+ - spec/rails_best_practices/checks/move_code_into_model_check_spec.rb
243
+ - spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb
244
+ - spec/rails_best_practices/checks/move_model_logic_into_model_check_spec.rb
245
+ - spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb
246
+ - spec/rails_best_practices/checks/not_use_default_route_check_spec.rb
247
+ - spec/rails_best_practices/checks/overuse_route_customizations_check_spec.rb
248
+ - spec/rails_best_practices/checks/replace_complex_creation_with_factory_method_check_spec.rb
249
+ - spec/rails_best_practices/checks/replace_instance_variable_with_local_variable_check_spec.rb
250
+ - spec/rails_best_practices/checks/use_before_filter_check_spec.rb
251
+ - spec/rails_best_practices/checks/use_model_association_check_spec.rb
252
+ - spec/rails_best_practices/checks/use_observer_check_spec.rb
253
+ - spec/rails_best_practices/checks/use_query_attribute_check_spec.rb
254
+ - spec/rails_best_practices/checks/use_say_with_time_in_migrations_check_spec.rb
255
+ - spec/rails_best_practices/checks/use_scope_access_check_spec.rb
256
+ - spec/rails_best_practices/core/error_spec.rb
257
+ - spec/rails_best_practices/core/visitable_sexp_spec.rb
258
+ - spec/rails_best_practices/core_ext/enumerable_spec.rb
259
+ - spec/rails_best_practices/core_ext/nil_class_spec.rb
260
+ - spec/rails_best_practices_spec.rb
261
+ - spec/spec_helper.rb
208
262
  has_rdoc: true
209
263
  homepage: http://rails-bestpractices.com
210
264
  licenses: []
@@ -241,5 +295,33 @@ rubygems_version: 1.3.7
241
295
  signing_key:
242
296
  specification_version: 3
243
297
  summary: a code metric tool for rails codes.
244
- test_files: []
245
-
298
+ test_files:
299
+ - spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb
300
+ - spec/rails_best_practices/checks/always_add_db_index_check_spec.rb
301
+ - spec/rails_best_practices/checks/check_spec.rb
302
+ - spec/rails_best_practices/checks/dry_bundler_in_capistrano_check_spec.rb
303
+ - spec/rails_best_practices/checks/isolate_seed_data_check_spec.rb
304
+ - spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb
305
+ - spec/rails_best_practices/checks/law_of_demeter_check_spec.rb
306
+ - spec/rails_best_practices/checks/move_code_into_controller_check_spec.rb
307
+ - spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb
308
+ - spec/rails_best_practices/checks/move_code_into_model_check_spec.rb
309
+ - spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb
310
+ - spec/rails_best_practices/checks/move_model_logic_into_model_check_spec.rb
311
+ - spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb
312
+ - spec/rails_best_practices/checks/not_use_default_route_check_spec.rb
313
+ - spec/rails_best_practices/checks/overuse_route_customizations_check_spec.rb
314
+ - spec/rails_best_practices/checks/replace_complex_creation_with_factory_method_check_spec.rb
315
+ - spec/rails_best_practices/checks/replace_instance_variable_with_local_variable_check_spec.rb
316
+ - spec/rails_best_practices/checks/use_before_filter_check_spec.rb
317
+ - spec/rails_best_practices/checks/use_model_association_check_spec.rb
318
+ - spec/rails_best_practices/checks/use_observer_check_spec.rb
319
+ - spec/rails_best_practices/checks/use_query_attribute_check_spec.rb
320
+ - spec/rails_best_practices/checks/use_say_with_time_in_migrations_check_spec.rb
321
+ - spec/rails_best_practices/checks/use_scope_access_check_spec.rb
322
+ - spec/rails_best_practices/core/error_spec.rb
323
+ - spec/rails_best_practices/core/visitable_sexp_spec.rb
324
+ - spec/rails_best_practices/core_ext/enumerable_spec.rb
325
+ - spec/rails_best_practices/core_ext/nil_class_spec.rb
326
+ - spec/rails_best_practices_spec.rb
327
+ - spec/spec_helper.rb