rails_best_practices 0.3.19 → 0.3.20

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -6,10 +6,10 @@ require 'jeweler'
6
6
  desc 'Default: run unit tests.'
7
7
  task :default => :spec
8
8
 
9
- desc 'Generate documentation for the sitemap plugin.'
9
+ desc 'Generate documentation for the rails_best_practices plugin.'
10
10
  Rake::RDocTask.new(:rdoc) do |rdoc|
11
11
  rdoc.rdoc_dir = 'rdoc'
12
- rdoc.title = 'Bullet'
12
+ rdoc.title = 'rails_best_practices'
13
13
  rdoc.options << '--line-numbers' << '--inline-source'
14
14
  rdoc.rdoc_files.include('README')
15
15
  rdoc.rdoc_files.include('lib/**/*.rb')
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.19
1
+ 0.3.20
@@ -2,125 +2,52 @@ require 'rails_best_practices/checks/check'
2
2
 
3
3
  module RailsBestPractices
4
4
  module Checks
5
- # Check a migration file to make sure every reference key has a database index.
5
+ # Check db/schema.rb file to make sure every reference key has a database index.
6
6
  #
7
- # Implementation:
8
- # Parse migration files twice.
9
- # First, remember all reference keys and index keys.
10
- # Second, compare reference keys and index keys, and add error when reference keys are not in index keys.
7
+ # Implementation: read all add_index method calls to get the indexed columns in table, then read integer method call in create_table block to get the reference columns in tables, compare with indexed columns, if not in the indexed columns, then it violates always_add_db_index_check.
11
8
  class AlwaysAddDbIndexCheck < Check
12
9
 
13
10
  def interesting_nodes
14
- [:defs]
11
+ [:block, :call]
15
12
  end
16
13
 
17
14
  def interesting_files
18
- MIGRATION_FILES
15
+ /db\/schema.rb/
19
16
  end
20
17
 
21
18
  def initialize
22
19
  super
23
- @files = []
24
- @@indexes = {}
25
- @@tables = []
26
- @parse = false
27
- end
28
-
29
- # make indexes class method for get indexes out of AlwaysAddDbIndexCheck class.
30
- def self.indexes
31
- @@indexes
20
+ @index_columns = []
32
21
  end
33
22
 
34
23
  def evaluate_start(node)
35
- if :up == node.message
36
- if @files.include? node.file
37
- @parse = true if :up == node.message
38
- else
39
- @files << node.file
40
- end
41
-
42
- if @parse
43
- check_references(node.body)
44
- else
45
- remember(node.body)
46
- end
47
- end
48
- end
49
-
50
- private
51
-
52
- def check_references(nodes)
53
- nodes[1..-1].each do |node|
54
- create_table_node = node.grep_nodes({:node_type => :call, :message => :create_table}).first
55
- if create_table_node
56
- table_name = create_table_node.arguments[1].to_ruby_string
57
- next unless @@tables.include? table_name
58
- node.grep_nodes({:node_type => :call, :message => :integer}).each do |integer_node|
59
- column_name = integer_node.arguments[1].to_ruby_string
60
- if column_name =~ /_id$/ and !@@indexes[table_name].include? column_name
61
- add_error "always add db index (#{table_name} => #{column_name})", integer_node.file, integer_node.line
62
- end
63
- end
64
- node.grep_nodes({:node_type => :call, :message => :references}).each do |references_node|
65
- column_name = references_node.arguments[1].to_ruby_string + "_id"
66
- if !@@indexes[table_name].include? column_name
67
- add_error "always add db index (#{table_name} => #{column_name})", references_node.file, references_node.line
68
- end
69
- end
70
- node.grep_nodes({:node_type => :call, :message => :column}).each do |column_node|
71
- if 'integer' == column_node.arguments[2].to_ruby_string
72
- column_name = column_node.arguments[1].to_ruby_string
73
- if column_name =~ /_id$/ and !@@indexes[table_name].include? column_name
74
- add_error "always add db index (#{table_name} => #{column_name})", column_node.file, column_node.line
75
- end
76
- end
77
- end
78
- end
79
- if :call == node.node_type and :add_column == node.message
80
- table_name = node.arguments[1].to_ruby_string
81
- column_name = node.arguments[2].to_ruby_string
82
- column_type = node.arguments[3].to_ruby_string
83
- if column_name =~ /_id$/ and column_type == "integer" and !@@indexes[table_name].include? column_name
84
- add_error "always add db index (#{table_name} => #{column_name})", node.file, node.line
24
+ if :block == node.node_type
25
+ find_index_columns(node)
26
+ elsif :call == node.node_type
27
+ case node.message
28
+ when :create_table
29
+ @table_name = node.arguments[1].to_ruby_string
30
+ when :integer
31
+ column_name = node.arguments[1].to_ruby_string
32
+ if column_name =~ /_id$/ and !indexed?(@table_name, column_name)
33
+ add_error "always add db index (#@table_name => #{column_name})", node.file, node.line
85
34
  end
86
35
  end
87
36
  end
88
37
  end
89
38
 
90
- def remember(nodes)
91
- nodes.grep_nodes({:node_type => :call, :message => :create_table}).each do |create_table_node|
92
- @@tables << create_table_node.arguments[1].to_ruby_string
93
- end
94
- nodes.grep_nodes({:node_type => :call, :message => :drop_table}).each do |drop_table_node|
95
- @@tables.delete(drop_table_node.arguments[1].to_ruby_string)
39
+ private
40
+ def find_index_columns(node)
41
+ node.grep_nodes({:node_type => :call, :message => :add_index}).each do |index_node|
42
+ table_name = index_node.arguments[1].to_ruby_string
43
+ reference_column_name = index_node.arguments[2].to_ruby_string
44
+ @index_columns << [table_name, reference_column_name]
45
+ end
96
46
  end
97
- @@tables.compact!
98
47
 
99
- remember_indexes(nodes)
100
- end
101
-
102
- # dynamically execute add_index because static parser can't handle
103
- #
104
- # [[:comments, :post_id], [:comments, :user_id]].each do |args|
105
- # add_index *args
106
- # end
107
- def remember_indexes(nodes)
108
- nodes[1..-1].each do |node|
109
- begin
110
- eval(node.to_ruby)
111
- rescue Exception
112
- end
48
+ def indexed?(table_name, column_name)
49
+ !!@index_columns.find { |reference| reference[0] == table_name and reference[1] == column_name }
113
50
  end
114
- end
115
51
  end
116
52
  end
117
53
  end
118
-
119
- def add_index(*args)
120
- table_name, column_names = *args
121
- table_name = table_name.to_s
122
- RailsBestPractices::Checks::AlwaysAddDbIndexCheck.indexes[table_name] ||= []
123
- Array(column_names).each do |column_name|
124
- RailsBestPractices::Checks::AlwaysAddDbIndexCheck.indexes[table_name] << column_name.to_s
125
- end
126
- end
@@ -3,7 +3,7 @@ require 'rails_best_practices/core/error'
3
3
  module RailsBestPractices
4
4
  module Checks
5
5
  class Check
6
- NODE_TYPES = [:call, :defn, :defs, :if, :unless, :class, :lasgn, :ivar]
6
+ NODE_TYPES = [:call, :defn, :defs, :if, :unless, :class, :lasgn, :ivar, :block]
7
7
 
8
8
  CONTROLLER_FILES = /_controller.rb$/
9
9
  MIGRATION_FILES = /db\/migrate\/.*rb/
@@ -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.19"
8
+ s.version = "0.3.20"
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{2010-03-19}
12
+ s.date = %q{2010-06-03}
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}
@@ -91,28 +91,28 @@ Gem::Specification.new do |s|
91
91
  s.rubygems_version = %q{1.3.6}
92
92
  s.summary = %q{check rails files according to ihower's presentation 'rails best practices'}
93
93
  s.test_files = [
94
- "spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb",
95
- "spec/rails_best_practices/checks/always_add_db_index_check_spec.rb",
96
- "spec/rails_best_practices/checks/isolate_seed_data_check_spec.rb",
97
- "spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb",
98
- "spec/rails_best_practices/checks/law_of_demeter_check_spec.rb",
99
- "spec/rails_best_practices/checks/many_to_many_collection_check_spec.rb",
100
- "spec/rails_best_practices/checks/move_code_into_controller_check_spec.rb",
101
- "spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb",
102
- "spec/rails_best_practices/checks/move_code_into_model_check_spec.rb",
103
- "spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb",
94
+ "spec/rails_best_practices/checks/isolate_seed_data_check_spec.rb",
104
95
  "spec/rails_best_practices/checks/move_model_logic_into_model_check_spec.rb",
105
- "spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb",
106
- "spec/rails_best_practices/checks/nested_model_forms_check_spec.rb",
107
- "spec/rails_best_practices/checks/not_use_default_route_check_spec.rb",
96
+ "spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb",
97
+ "spec/rails_best_practices/checks/move_code_into_controller_check_spec.rb",
98
+ "spec/rails_best_practices/checks/use_observer_check_spec.rb",
108
99
  "spec/rails_best_practices/checks/overuse_route_customizations_check_spec.rb",
100
+ "spec/rails_best_practices/checks/nested_model_forms_check_spec.rb",
101
+ "spec/rails_best_practices/checks/always_add_db_index_check_spec.rb",
102
+ "spec/rails_best_practices/checks/many_to_many_collection_check_spec.rb",
103
+ "spec/rails_best_practices/checks/use_before_filter_check_spec.rb",
104
+ "spec/rails_best_practices/checks/law_of_demeter_check_spec.rb",
105
+ "spec/rails_best_practices/checks/use_scope_access_check_spec.rb",
109
106
  "spec/rails_best_practices/checks/replace_complex_creation_with_factory_method_check_spec.rb",
107
+ "spec/rails_best_practices/checks/not_use_default_route_check_spec.rb",
108
+ "spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb",
109
+ "spec/rails_best_practices/checks/use_model_callback_check_spec.rb",
110
+ "spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb",
110
111
  "spec/rails_best_practices/checks/replace_instance_variable_with_local_variable_check_spec.rb",
111
- "spec/rails_best_practices/checks/use_before_filter_check_spec.rb",
112
112
  "spec/rails_best_practices/checks/use_model_association_check_spec.rb",
113
- "spec/rails_best_practices/checks/use_model_callback_check_spec.rb",
114
- "spec/rails_best_practices/checks/use_observer_check_spec.rb",
115
- "spec/rails_best_practices/checks/use_scope_access_check_spec.rb",
113
+ "spec/rails_best_practices/checks/move_code_into_model_check_spec.rb",
114
+ "spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb",
115
+ "spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb",
116
116
  "spec/spec_helper.rb"
117
117
  ]
118
118
 
@@ -7,317 +7,50 @@ describe RailsBestPractices::Checks::AlwaysAddDbIndexCheck do
7
7
 
8
8
  it "should always add db index" do
9
9
  content = <<-EOF
10
- class CreateComments < ActiveRecord::Migration
11
- def self.up
12
- create_table "comments", :force => true do |t|
13
- t.string :content
14
- t.integer :post_id
15
- t.integer :user_id
16
- end
17
- end
18
-
19
- def self.down
20
- drop_table "comments"
10
+ ActiveRecord::Schema.define(:version => 20100603080629) do
11
+ create_table "comments", :force => true do |t|
12
+ t.string "content"
13
+ t.integer "post_id"
14
+ t.integer "user_id"
21
15
  end
22
16
  end
23
17
  EOF
24
- @runner.check('db/migrate/20090918130258_create_comments.rb', content)
25
- @runner.check('db/migrate/20090918130258_create_comments.rb', content)
18
+ @runner.check('db/schema.rb', content)
26
19
  errors = @runner.errors
27
20
  errors.should_not be_empty
28
- errors[0].to_s.should == "db/migrate/20090918130258_create_comments.rb:5 - always add db index (comments => post_id)"
29
- errors[1].to_s.should == "db/migrate/20090918130258_create_comments.rb:6 - always add db index (comments => user_id)"
21
+ errors[0].to_s.should == "db/schema.rb:4 - always add db index (comments => post_id)"
22
+ errors[1].to_s.should == "db/schema.rb:5 - always add db index (comments => user_id)"
30
23
  end
31
-
24
+
32
25
  it "should always add db index with column has no id" do
33
26
  content = <<-EOF
34
- class CreateComments < ActiveRecord::Migration
35
- def self.up
36
- create_table "comments", :force => true do |t|
37
- t.string :content
38
- t.integer :position
39
- end
40
- end
41
-
42
- def self.down
43
- drop_table "comments"
44
- end
45
- end
46
- EOF
47
- @runner.check('db/migrate/20090918130258_create_comments.rb', content)
48
- @runner.check('db/migrate/20090918130258_create_comments.rb', content)
49
- errors = @runner.errors
50
- errors.should be_empty
51
- end
52
-
53
- it "should always add db index with references" do
54
- content = <<-EOF
55
- class CreateComments < ActiveRecord::Migration
56
- def self.up
57
- create_table "comments", :force => true do |t|
58
- t.string :content
59
- t.references :post
60
- t.references :user
61
- end
62
- end
63
-
64
- def self.down
65
- drop_table "comments"
66
- end
67
- end
68
- EOF
69
- @runner.check('db/migrate/20090918130258_create_comments.rb', content)
70
- @runner.check('db/migrate/20090918130258_create_comments.rb', content)
71
- errors = @runner.errors
72
- errors.should_not be_empty
73
- errors[0].to_s.should == "db/migrate/20090918130258_create_comments.rb:5 - always add db index (comments => post_id)"
74
- errors[1].to_s.should == "db/migrate/20090918130258_create_comments.rb:6 - always add db index (comments => user_id)"
75
- end
76
-
77
- it "should always add db index with column" do
78
- content = <<-EOF
79
- class CreateComments < ActiveRecord::Migration
80
- def self.up
81
- create_table "comments", :force => true do |t|
82
- t.string :content
83
- t.column :post_id, :integer
84
- t.column :user_id, :integer
85
- end
86
- end
87
-
88
- def self.down
89
- drop_table "comments"
90
- end
91
- end
92
- EOF
93
- @runner.check('db/migrate/20090918130258_create_comments.rb', content)
94
- @runner.check('db/migrate/20090918130258_create_comments.rb', content)
95
- errors = @runner.errors
96
- errors.should_not be_empty
97
- errors[0].to_s.should == "db/migrate/20090918130258_create_comments.rb:5 - always add db index (comments => post_id)"
98
- errors[1].to_s.should == "db/migrate/20090918130258_create_comments.rb:6 - always add db index (comments => user_id)"
99
- end
100
-
101
- it "should not always add db index with add_index" do
102
- content = <<-EOF
103
- class CreateComments < ActiveRecord::Migration
104
- def self.up
105
- create_table "comments", :force => true do |t|
106
- t.string :content
107
- t.integer :post_id
108
- t.integer :user_id
109
- end
110
-
111
- add_index :comments, :post_id
112
- add_index :comments, :user_id
113
- end
114
-
115
- def self.down
116
- drop_table "comments"
117
- end
118
- end
119
- EOF
120
- @runner.check('db/migrate/20090918130258_create_comments.rb', content)
121
- @runner.check('db/migrate/20090918130258_create_comments.rb', content)
122
- errors = @runner.errors
123
- errors.should be_empty
124
- end
125
-
126
- it "should not always add db index with add_index in another migration file" do
127
- content = <<-EOF
128
- class CreateComments < ActiveRecord::Migration
129
- def self.up
130
- create_table "comments", :force => true do |t|
131
- t.string :content
132
- t.integer :post_id
133
- t.integer :user_id
134
- end
135
- end
136
-
137
- def self.down
138
- drop_table "comments"
139
- end
140
- end
141
- EOF
142
- add_index_content = <<-EOF
143
- class AddIndexesToComments < ActiveRecord::Migration
144
- def self.up
145
- add_index :comments, :post_id
146
- add_index :comments, :user_id
147
- end
148
- end
149
- EOF
150
- @runner.check('db/migrate/20090918130258_create_comments.rb', content)
151
- @runner.check('db/migrate/20090919130260_add_indexes_to_comments.rb', add_index_content)
152
- @runner.check('db/migrate/20090918130258_create_comments.rb', content)
153
- @runner.check('db/migrate/20090919130260_add_indexes_to_comments.rb', add_index_content)
154
- errors = @runner.errors
155
- errors.should be_empty
156
- end
157
-
158
- it "should not always add db index with add_index in another migration file and a migration between them" do
159
- content = <<-EOF
160
- class CreateComments < ActiveRecord::Migration
161
- def self.up
162
- create_table "comments", :force => true do |t|
163
- t.string :content
164
- t.integer :post_id
165
- t.integer :user_id
166
- end
167
- end
168
-
169
- def self.down
170
- drop_table "comments"
171
- end
172
- end
173
- EOF
174
- another_content = <<-EOF
175
- class Settings < ActiveRecord::Migration
176
- def self.my_escape(val)
177
- end
178
-
179
- def self.up
180
- add_column :settings, :groep, :string, :limit => 50
27
+ ActiveRecord::Schema.define(:version => 20100603080629) do
28
+ create_table "comments", :force => true do |t|
29
+ t.string "content"
30
+ t.integer "position"
181
31
  end
182
32
  end
183
33
  EOF
184
- add_index_content = <<-EOF
185
- class AddIndexesToComments < ActiveRecord::Migration
186
- def self.up
187
- add_index :comments, :post_id
188
- add_index :comments, :user_id
189
- end
190
- end
191
- EOF
192
- @runner.check('db/migrate/20090918140258_create_comments.rb', content)
193
- @runner.check('db/migrate/20090918140259_settings.rb', another_content)
194
- @runner.check('db/migrate/20090919140260_add_indexes_to_comments.rb', add_index_content)
195
- @runner.check('db/migrate/20090918140258_create_comments.rb', content)
196
- @runner.check('db/migrate/20090918140259_settings.rb', another_content)
197
- @runner.check('db/migrate/20090919140260_add_indexes_to_comments.rb', add_index_content)
34
+ @runner.check('db/schema.rb', content)
198
35
  errors = @runner.errors
199
36
  errors.should be_empty
200
37
  end
201
-
202
- it "should always add db index without error" do
203
- content = <<-EOF
204
- class AddIndexes < ActiveRecord::Migration
205
- def self.up
206
- [[:site_wide_admins, :admin_id, { :unique => true }],
207
- [:photos, [:target_id, :target_type, :type]],
208
- [:photos, [:target_id, :target_type, :parent_id, :is_avatar]],
209
- [:category_assignments, [:category_id, :sub_category_id, :target_id, :target_type]],
210
- [:network_connections, :user_id]].each do |args|
211
- add_index(*args) rescue say "Failed to add index"
212
- end
213
- # raise "abort migration"
214
- end
215
-
216
- def self.down
217
- end
218
- end
219
- EOF
220
- @runner.check('db/migrate/20091111113612_add_indexes.rb', content)
221
- @runner.check('db/migrate/20091111113612_add_indexes.rb', content)
222
- errors = @runner.errors
223
- end
224
-
225
- it "should always add db index without error 2" do
226
- content = <<-EOF
227
- class MoveCategoriesToProfileArea < ActiveRecord::Migration
228
- def self.up
229
- CategoryArea.update_all({:name => "Profile"}, ["name IN (?)", %w(UserSite UserProfile Site)])
230
- end
231
-
232
- def self.down
233
- end
234
- end
235
- EOF
236
- @runner.check('db/migrate/20090706091635_move_categories_to_profile_area.rb', content)
237
- @runner.check('db/migrate/20090706091635_move_categories_to_profile_area.rb', content)
238
- errors = @runner.errors
239
- end
240
-
241
- it "should always add db index without duplicate error outputs" do
242
- content = <<-EOF
243
- class AllTables < ActiveRecord::Migration
244
- def self.up
245
- create_table "ducks" do |t|
246
- t.column "registration", :string, :limit => 32
247
- t.column "description", :string
248
- end
249
-
250
- create_table "lab_data" do |t|
251
- t.integer "input_biologist_id", :null => true
252
- t.integer "owner_biologist_id", :null => false
253
- t.column "remark", :string, :limit => 250
254
- end
255
- end
256
- end
257
- EOF
258
- @runner.check('db/migrate/20090204160203_all_tables.rb', content)
259
- @runner.check('db/migrate/20090204160203_all_tables.rb', content)
260
- errors = @runner.errors
261
- errors.should_not be_empty
262
- errors[0].to_s.should == "db/migrate/20090204160203_all_tables.rb:9 - always add db index (lab_data => input_biologist_id)"
263
- errors[1].to_s.should == "db/migrate/20090204160203_all_tables.rb:10 - always add db index (lab_data => owner_biologist_id)"
264
- end
265
38
 
266
- it "should not always add db index when table is created and droped" do
39
+ it "should not always add db index with add_index" do
267
40
  content = <<-EOF
268
- class CreateComments < ActiveRecord::Migration
269
- def self.up
270
- create_table "comments", :force => true do |t|
271
- t.string :content
272
- t.integer :post_id
273
- t.integer :user_id
274
- end
41
+ ActiveRecord::Schema.define(:version => 20100603080629) do
42
+ create_table "comments", :force => true do |t|
43
+ t.string "content"
44
+ t.integer "post_id"
45
+ t.integer "user_id"
275
46
  end
276
47
 
277
- def self.down
278
- drop_table "comments"
279
- end
48
+ add_index "comments", ["post_id"], :name => "index_comments_on_post_id"
49
+ add_index "comments", ["user_id"], :name => "index_comments_on_user_id"
280
50
  end
281
51
  EOF
282
- another_content = <<-EOF
283
- class DropComments < ActiveRecord::Migration
284
- def self.up
285
- drop_table "comments"
286
- end
287
-
288
- def self.down
289
- end
290
- end
291
- EOF
292
- @runner.check('db/migrate/20100118140258_create_comments.rb', content)
293
- @runner.check('db/migrate/20100118140259_drop_comments.rb', another_content)
294
- @runner.check('db/migrate/20100118140258_create_comments.rb', content)
295
- @runner.check('db/migrate/20100118140259_drop_comments.rb', another_content)
52
+ @runner.check('db/schema.rb', content)
296
53
  errors = @runner.errors
297
54
  errors.should be_empty
298
55
  end
299
-
300
- it "should always add db index when add_column" do
301
- content = <<-EOF
302
- class CreateComments < ActiveRecord::Migration
303
- def self.up
304
- create_table "comments", :force => true do |t|
305
- t.string :content
306
- end
307
- add_column :comments, :post_id, :integer
308
- add_column :comments, :user_id, :integer
309
- end
310
-
311
- def self.down
312
- drop_table "comments"
313
- end
314
- end
315
- EOF
316
- @runner.check('db/migrate/20090918130258_create_comments.rb', content)
317
- @runner.check('db/migrate/20090918130258_create_comments.rb', content)
318
- errors = @runner.errors
319
- errors.should_not be_empty
320
- errors[0].to_s.should == "db/migrate/20090918130258_create_comments.rb:7 - always add db index (comments => post_id)"
321
- errors[1].to_s.should == "db/migrate/20090918130258_create_comments.rb:8 - always add db index (comments => user_id)"
322
- end
323
56
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 3
8
- - 19
9
- version: 0.3.19
8
+ - 20
9
+ version: 0.3.20
10
10
  platform: ruby
11
11
  authors:
12
12
  - Richard Huang
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-19 00:00:00 +08:00
17
+ date: 2010-06-03 00:00:00 +08:00
18
18
  default_executable: rails_best_practices
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -151,26 +151,26 @@ signing_key:
151
151
  specification_version: 3
152
152
  summary: check rails files according to ihower's presentation 'rails best practices'
153
153
  test_files:
154
- - spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb
155
- - spec/rails_best_practices/checks/always_add_db_index_check_spec.rb
156
154
  - spec/rails_best_practices/checks/isolate_seed_data_check_spec.rb
157
- - spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb
158
- - spec/rails_best_practices/checks/law_of_demeter_check_spec.rb
159
- - spec/rails_best_practices/checks/many_to_many_collection_check_spec.rb
160
- - spec/rails_best_practices/checks/move_code_into_controller_check_spec.rb
161
- - spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb
162
- - spec/rails_best_practices/checks/move_code_into_model_check_spec.rb
163
- - spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb
164
155
  - spec/rails_best_practices/checks/move_model_logic_into_model_check_spec.rb
165
- - spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb
166
- - spec/rails_best_practices/checks/nested_model_forms_check_spec.rb
167
- - spec/rails_best_practices/checks/not_use_default_route_check_spec.rb
156
+ - spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb
157
+ - spec/rails_best_practices/checks/move_code_into_controller_check_spec.rb
158
+ - spec/rails_best_practices/checks/use_observer_check_spec.rb
168
159
  - spec/rails_best_practices/checks/overuse_route_customizations_check_spec.rb
160
+ - spec/rails_best_practices/checks/nested_model_forms_check_spec.rb
161
+ - spec/rails_best_practices/checks/always_add_db_index_check_spec.rb
162
+ - spec/rails_best_practices/checks/many_to_many_collection_check_spec.rb
163
+ - spec/rails_best_practices/checks/use_before_filter_check_spec.rb
164
+ - spec/rails_best_practices/checks/law_of_demeter_check_spec.rb
165
+ - spec/rails_best_practices/checks/use_scope_access_check_spec.rb
169
166
  - spec/rails_best_practices/checks/replace_complex_creation_with_factory_method_check_spec.rb
167
+ - spec/rails_best_practices/checks/not_use_default_route_check_spec.rb
168
+ - spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb
169
+ - spec/rails_best_practices/checks/use_model_callback_check_spec.rb
170
+ - spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb
170
171
  - spec/rails_best_practices/checks/replace_instance_variable_with_local_variable_check_spec.rb
171
- - spec/rails_best_practices/checks/use_before_filter_check_spec.rb
172
172
  - spec/rails_best_practices/checks/use_model_association_check_spec.rb
173
- - spec/rails_best_practices/checks/use_model_callback_check_spec.rb
174
- - spec/rails_best_practices/checks/use_observer_check_spec.rb
175
- - spec/rails_best_practices/checks/use_scope_access_check_spec.rb
173
+ - spec/rails_best_practices/checks/move_code_into_model_check_spec.rb
174
+ - spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb
175
+ - spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb
176
176
  - spec/spec_helper.rb