rails_best_practices 0.2.6 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
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 "Rails Best Practices":http://www.slideshare.net/ihower/rails-best-practices.
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.6
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 DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
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.6"
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-08}
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/use_scope_access_check_spec.rb",
84
- "spec/rails_best_practices/checks/not_use_default_route_check_spec.rb",
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/many_to_many_collection_check_spec.rb",
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/replace_complex_creation_with_factory_method_check_spec.rb",
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/always_add_db_index_check_spec.rb",
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.6
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-08 00:00:00 +08:00
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/keep_finders_on_their_own_model_check_spec.rb
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/many_to_many_collection_check_spec.rb
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/replace_complex_creation_with_factory_method_check_spec.rb
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/always_add_db_index_check_spec.rb
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