rails_best_practices 0.3.16 → 0.3.17
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/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.3.
|
|
1
|
+
0.3.17
|
|
@@ -22,6 +22,7 @@ module RailsBestPractices
|
|
|
22
22
|
super
|
|
23
23
|
@files = []
|
|
24
24
|
@@indexes = {}
|
|
25
|
+
@@tables = []
|
|
25
26
|
@parse = false
|
|
26
27
|
end
|
|
27
28
|
|
|
@@ -41,7 +42,7 @@ module RailsBestPractices
|
|
|
41
42
|
if @parse
|
|
42
43
|
check_references(node.body)
|
|
43
44
|
else
|
|
44
|
-
|
|
45
|
+
remember(node.body)
|
|
45
46
|
end
|
|
46
47
|
end
|
|
47
48
|
end
|
|
@@ -53,6 +54,7 @@ module RailsBestPractices
|
|
|
53
54
|
create_table_node = node.grep_nodes({:node_type => :call, :message => :create_table}).first
|
|
54
55
|
if create_table_node
|
|
55
56
|
table_name = create_table_node.arguments[1].to_ruby_string
|
|
57
|
+
next unless @@tables.include? table_name
|
|
56
58
|
node.grep_nodes({:node_type => :call, :message => :integer}).each do |integer_node|
|
|
57
59
|
column_name = integer_node.arguments[1].to_ruby_string
|
|
58
60
|
if column_name =~ /_id$/ and !@@indexes[table_name].include? column_name
|
|
@@ -76,6 +78,18 @@ module RailsBestPractices
|
|
|
76
78
|
end
|
|
77
79
|
end
|
|
78
80
|
end
|
|
81
|
+
|
|
82
|
+
def remember(nodes)
|
|
83
|
+
nodes.grep_nodes({:node_type => :call, :message => :create_table}).each do |create_table_node|
|
|
84
|
+
@@tables << create_table_node.arguments[1].to_ruby_string
|
|
85
|
+
end
|
|
86
|
+
nodes.grep_nodes({:node_type => :call, :message => :drop_table}).each do |drop_table_node|
|
|
87
|
+
@@tables.delete(drop_table_node.arguments[1].to_ruby_string)
|
|
88
|
+
end
|
|
89
|
+
@@tables.compact!
|
|
90
|
+
|
|
91
|
+
remember_indexes(nodes)
|
|
92
|
+
end
|
|
79
93
|
|
|
80
94
|
# dynamically execute add_index because static parser can't handle
|
|
81
95
|
#
|
|
@@ -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.17"
|
|
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{
|
|
12
|
+
s.date = %q{2010-01-25}
|
|
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.5}
|
|
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/
|
|
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/
|
|
106
|
-
"spec/rails_best_practices/checks/
|
|
107
|
-
"spec/rails_best_practices/checks/
|
|
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/
|
|
114
|
-
"spec/rails_best_practices/checks/
|
|
115
|
-
"spec/rails_best_practices/checks/
|
|
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
|
|
|
@@ -262,4 +262,38 @@ describe RailsBestPractices::Checks::AlwaysAddDbIndexCheck do
|
|
|
262
262
|
errors[0].to_s.should == "db/migrate/20090204160203_all_tables.rb:9 - always add db index (lab_data => input_biologist_id)"
|
|
263
263
|
errors[1].to_s.should == "db/migrate/20090204160203_all_tables.rb:10 - always add db index (lab_data => owner_biologist_id)"
|
|
264
264
|
end
|
|
265
|
+
|
|
266
|
+
it "should not always add db index when table is created and droped" do
|
|
267
|
+
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
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
def self.down
|
|
278
|
+
drop_table "comments"
|
|
279
|
+
end
|
|
280
|
+
end
|
|
281
|
+
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)
|
|
296
|
+
errors = @runner.errors
|
|
297
|
+
errors.should be_empty
|
|
298
|
+
end
|
|
265
299
|
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.17
|
|
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:
|
|
12
|
+
date: 2010-01-25 00:00:00 +08:00
|
|
13
13
|
default_executable: rails_best_practices
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
@@ -136,26 +136,26 @@ signing_key:
|
|
|
136
136
|
specification_version: 3
|
|
137
137
|
summary: check rails files according to ihower's presentation 'rails best practices'
|
|
138
138
|
test_files:
|
|
139
|
-
- spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb
|
|
140
|
-
- spec/rails_best_practices/checks/always_add_db_index_check_spec.rb
|
|
141
139
|
- spec/rails_best_practices/checks/isolate_seed_data_check_spec.rb
|
|
142
|
-
- spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb
|
|
143
|
-
- spec/rails_best_practices/checks/law_of_demeter_check_spec.rb
|
|
144
|
-
- spec/rails_best_practices/checks/many_to_many_collection_check_spec.rb
|
|
145
|
-
- spec/rails_best_practices/checks/move_code_into_controller_check_spec.rb
|
|
146
|
-
- spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb
|
|
147
|
-
- spec/rails_best_practices/checks/move_code_into_model_check_spec.rb
|
|
148
|
-
- spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb
|
|
149
140
|
- spec/rails_best_practices/checks/move_model_logic_into_model_check_spec.rb
|
|
150
|
-
- spec/rails_best_practices/checks/
|
|
151
|
-
- spec/rails_best_practices/checks/
|
|
152
|
-
- spec/rails_best_practices/checks/
|
|
141
|
+
- spec/rails_best_practices/checks/move_code_into_helper_check_spec.rb
|
|
142
|
+
- spec/rails_best_practices/checks/move_code_into_controller_check_spec.rb
|
|
143
|
+
- spec/rails_best_practices/checks/use_observer_check_spec.rb
|
|
153
144
|
- spec/rails_best_practices/checks/overuse_route_customizations_check_spec.rb
|
|
145
|
+
- spec/rails_best_practices/checks/nested_model_forms_check_spec.rb
|
|
146
|
+
- spec/rails_best_practices/checks/always_add_db_index_check_spec.rb
|
|
147
|
+
- spec/rails_best_practices/checks/many_to_many_collection_check_spec.rb
|
|
148
|
+
- spec/rails_best_practices/checks/use_before_filter_check_spec.rb
|
|
149
|
+
- spec/rails_best_practices/checks/law_of_demeter_check_spec.rb
|
|
150
|
+
- spec/rails_best_practices/checks/use_scope_access_check_spec.rb
|
|
154
151
|
- spec/rails_best_practices/checks/replace_complex_creation_with_factory_method_check_spec.rb
|
|
152
|
+
- spec/rails_best_practices/checks/not_use_default_route_check_spec.rb
|
|
153
|
+
- spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb
|
|
154
|
+
- spec/rails_best_practices/checks/use_model_callback_check_spec.rb
|
|
155
|
+
- spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb
|
|
155
156
|
- spec/rails_best_practices/checks/replace_instance_variable_with_local_variable_check_spec.rb
|
|
156
|
-
- spec/rails_best_practices/checks/use_before_filter_check_spec.rb
|
|
157
157
|
- spec/rails_best_practices/checks/use_model_association_check_spec.rb
|
|
158
|
-
- spec/rails_best_practices/checks/
|
|
159
|
-
- spec/rails_best_practices/checks/
|
|
160
|
-
- spec/rails_best_practices/checks/
|
|
158
|
+
- spec/rails_best_practices/checks/move_code_into_model_check_spec.rb
|
|
159
|
+
- spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb
|
|
160
|
+
- spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb
|
|
161
161
|
- spec/spec_helper.rb
|