rails_best_practices 0.2.6 → 0.2.8
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
CHANGED
@@ -1,10 +1,17 @@
|
|
1
1
|
h1. rails_best_practices
|
2
2
|
|
3
|
-
rails_best_practices is a gem to check quality of rails app files according to ihower's presentation
|
3
|
+
rails_best_practices is a gem to check quality of rails app files according to ihower's presentation Rails Best Practices.
|
4
4
|
rails_best_practices is a static file parser tool based on ruby_parser.
|
5
5
|
|
6
6
|
*************************************************
|
7
7
|
|
8
|
+
h2. Resources
|
9
|
+
|
10
|
+
"ihower's presentation":http://www.slideshare.net/ihower/rails-best-practices
|
11
|
+
"Wiki":http://wiki.github.com/flyerhzm/rails_best_practices
|
12
|
+
|
13
|
+
*************************************************
|
14
|
+
|
8
15
|
h2. Install
|
9
16
|
|
10
17
|
<pre><code>
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.8
|
@@ -2,6 +2,12 @@ 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.
|
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.
|
5
11
|
class AlwaysAddDbIndexCheck < Check
|
6
12
|
|
7
13
|
def interesting_nodes
|
@@ -30,6 +36,7 @@ module RailsBestPractices
|
|
30
36
|
if @parse and :up == node.message
|
31
37
|
@references.each do |table_name, column_names|
|
32
38
|
differences = column_names - (@indexes[table_name] || [])
|
39
|
+
@references[table_name] = column_names - differences
|
33
40
|
hint = differences.collect {|column_name| "#{table_name} => #{column_name}"}.join(', ')
|
34
41
|
add_error "always add db index (#{hint})" unless differences.empty?
|
35
42
|
end
|
@@ -36,6 +36,10 @@ options = {}
|
|
36
36
|
OptionParser.new do |opts|
|
37
37
|
opts.banner = "Usage: rails_best_practices [options]"
|
38
38
|
|
39
|
+
opts.on("-d", "--debug", "Debug mode") do
|
40
|
+
options['debug'] = true
|
41
|
+
end
|
42
|
+
|
39
43
|
opts.on_tail("-h", "--help", "Show this message") do
|
40
44
|
puts opts
|
41
45
|
exit
|
@@ -45,6 +49,7 @@ OptionParser.new do |opts|
|
|
45
49
|
end
|
46
50
|
|
47
51
|
runner = RailsBestPractices::Core::Runner.new
|
52
|
+
runner.set_debug if options['debug']
|
48
53
|
ignore_vendor_directories(add_duplicate_migration_files(expand_dirs_to_files(ARGV))).each { |file| runner.check_file(file) }
|
49
54
|
runner.errors.each {|error| puts error}
|
50
55
|
puts "\nFound #{runner.errors.size} errors."
|
@@ -19,6 +19,11 @@ module RailsBestPractices
|
|
19
19
|
@checks ||= load_checks
|
20
20
|
@checker ||= CheckingVisitor.new(@checks)
|
21
21
|
@parser = RubyParser.new
|
22
|
+
@debug = false
|
23
|
+
end
|
24
|
+
|
25
|
+
def set_debug
|
26
|
+
@debug = true
|
22
27
|
end
|
23
28
|
|
24
29
|
def check(filename, content)
|
@@ -46,6 +51,7 @@ module RailsBestPractices
|
|
46
51
|
private
|
47
52
|
|
48
53
|
def parse(filename, content)
|
54
|
+
puts filename if @debug
|
49
55
|
begin
|
50
56
|
@parser.parse(content, filename)
|
51
57
|
rescue Exception => e
|
@@ -1,15 +1,15 @@
|
|
1
1
|
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run
|
2
|
+
# DO NOT EDIT THIS FILE
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rails_best_practices}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.8"
|
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-09}
|
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}
|
@@ -80,23 +80,23 @@ Gem::Specification.new do |s|
|
|
80
80
|
s.rubygems_version = %q{1.3.5}
|
81
81
|
s.summary = %q{check rails files according to ihower's presentation 'rails best practices'}
|
82
82
|
s.test_files = [
|
83
|
-
"spec/rails_best_practices/checks/
|
84
|
-
"spec/rails_best_practices/checks/
|
85
|
-
"spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb",
|
86
|
-
"spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb",
|
87
|
-
"spec/rails_best_practices/checks/use_model_callback_check_spec.rb",
|
83
|
+
"spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb",
|
84
|
+
"spec/rails_best_practices/checks/always_add_db_index_check_spec.rb",
|
88
85
|
"spec/rails_best_practices/checks/isolate_seed_data_check_spec.rb",
|
89
|
-
"spec/rails_best_practices/checks/
|
90
|
-
"spec/rails_best_practices/checks/use_model_association_check_spec.rb",
|
91
|
-
"spec/rails_best_practices/checks/move_model_logic_into_model_check_spec.rb",
|
86
|
+
"spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb",
|
92
87
|
"spec/rails_best_practices/checks/law_of_demeter_check_spec.rb",
|
93
|
-
"spec/rails_best_practices/checks/
|
94
|
-
"spec/rails_best_practices/checks/nested_model_forms_check_spec.rb",
|
95
|
-
"spec/rails_best_practices/checks/use_observer_check_spec.rb",
|
88
|
+
"spec/rails_best_practices/checks/many_to_many_collection_check_spec.rb",
|
96
89
|
"spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb",
|
90
|
+
"spec/rails_best_practices/checks/move_model_logic_into_model_check_spec.rb",
|
97
91
|
"spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb",
|
92
|
+
"spec/rails_best_practices/checks/nested_model_forms_check_spec.rb",
|
93
|
+
"spec/rails_best_practices/checks/not_use_default_route_check_spec.rb",
|
98
94
|
"spec/rails_best_practices/checks/overuse_route_customizations_check_spec.rb",
|
99
|
-
"spec/rails_best_practices/checks/
|
95
|
+
"spec/rails_best_practices/checks/replace_complex_creation_with_factory_method_check_spec.rb",
|
96
|
+
"spec/rails_best_practices/checks/use_model_association_check_spec.rb",
|
97
|
+
"spec/rails_best_practices/checks/use_model_callback_check_spec.rb",
|
98
|
+
"spec/rails_best_practices/checks/use_observer_check_spec.rb",
|
99
|
+
"spec/rails_best_practices/checks/use_scope_access_check_spec.rb",
|
100
100
|
"spec/spec_helper.rb"
|
101
101
|
]
|
102
102
|
|
@@ -116,4 +116,3 @@ Gem::Specification.new do |s|
|
|
116
116
|
s.add_dependency(%q<ruby2ruby>, [">= 0"])
|
117
117
|
end
|
118
118
|
end
|
119
|
-
|
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.2.
|
4
|
+
version: 0.2.8
|
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-09 00:00:00 +08:00
|
13
13
|
default_executable: rails_best_practices
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -125,21 +125,21 @@ signing_key:
|
|
125
125
|
specification_version: 3
|
126
126
|
summary: check rails files according to ihower's presentation 'rails best practices'
|
127
127
|
test_files:
|
128
|
-
- spec/rails_best_practices/checks/use_scope_access_check_spec.rb
|
129
|
-
- spec/rails_best_practices/checks/not_use_default_route_check_spec.rb
|
130
128
|
- spec/rails_best_practices/checks/add_model_virtual_attribute_check_spec.rb
|
131
|
-
- spec/rails_best_practices/checks/
|
132
|
-
- spec/rails_best_practices/checks/use_model_callback_check_spec.rb
|
129
|
+
- spec/rails_best_practices/checks/always_add_db_index_check_spec.rb
|
133
130
|
- spec/rails_best_practices/checks/isolate_seed_data_check_spec.rb
|
134
|
-
- spec/rails_best_practices/checks/
|
135
|
-
- spec/rails_best_practices/checks/use_model_association_check_spec.rb
|
136
|
-
- spec/rails_best_practices/checks/move_model_logic_into_model_check_spec.rb
|
131
|
+
- spec/rails_best_practices/checks/keep_finders_on_their_own_model_check_spec.rb
|
137
132
|
- spec/rails_best_practices/checks/law_of_demeter_check_spec.rb
|
138
|
-
- spec/rails_best_practices/checks/
|
139
|
-
- spec/rails_best_practices/checks/nested_model_forms_check_spec.rb
|
140
|
-
- spec/rails_best_practices/checks/use_observer_check_spec.rb
|
133
|
+
- spec/rails_best_practices/checks/many_to_many_collection_check_spec.rb
|
141
134
|
- spec/rails_best_practices/checks/move_finder_to_named_scope_check_spec.rb
|
135
|
+
- spec/rails_best_practices/checks/move_model_logic_into_model_check_spec.rb
|
142
136
|
- spec/rails_best_practices/checks/needless_deep_nesting_check_spec.rb
|
137
|
+
- spec/rails_best_practices/checks/nested_model_forms_check_spec.rb
|
138
|
+
- spec/rails_best_practices/checks/not_use_default_route_check_spec.rb
|
143
139
|
- spec/rails_best_practices/checks/overuse_route_customizations_check_spec.rb
|
144
|
-
- spec/rails_best_practices/checks/
|
140
|
+
- spec/rails_best_practices/checks/replace_complex_creation_with_factory_method_check_spec.rb
|
141
|
+
- spec/rails_best_practices/checks/use_model_association_check_spec.rb
|
142
|
+
- spec/rails_best_practices/checks/use_model_callback_check_spec.rb
|
143
|
+
- spec/rails_best_practices/checks/use_observer_check_spec.rb
|
144
|
+
- spec/rails_best_practices/checks/use_scope_access_check_spec.rb
|
145
145
|
- spec/spec_helper.rb
|