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 "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