rails_best_practices 1.19.0 → 1.19.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/Guardfile +2 -2
  4. data/Rakefile +8 -8
  5. data/bin/rails_best_practices +1 -1
  6. data/lib/rails_best_practices/analyzer.rb +45 -45
  7. data/lib/rails_best_practices/command.rb +40 -40
  8. data/lib/rails_best_practices/core/check.rb +15 -15
  9. data/lib/rails_best_practices/core/klasses.rb +1 -1
  10. data/lib/rails_best_practices/core/methods.rb +7 -7
  11. data/lib/rails_best_practices/core/model_associations.rb +3 -3
  12. data/lib/rails_best_practices/core/modules.rb +1 -1
  13. data/lib/rails_best_practices/core/routes.rb +2 -2
  14. data/lib/rails_best_practices/core/runner.rb +3 -3
  15. data/lib/rails_best_practices/core_ext/erubis.rb +4 -4
  16. data/lib/rails_best_practices/lexicals/remove_tab_check.rb +2 -2
  17. data/lib/rails_best_practices/lexicals/remove_trailing_whitespace_check.rb +2 -2
  18. data/lib/rails_best_practices/prepares/config_prepare.rb +1 -1
  19. data/lib/rails_best_practices/prepares/controller_prepare.rb +8 -8
  20. data/lib/rails_best_practices/prepares/helper_prepare.rb +1 -1
  21. data/lib/rails_best_practices/prepares/initializer_prepare.rb +4 -4
  22. data/lib/rails_best_practices/prepares/mailer_prepare.rb +1 -1
  23. data/lib/rails_best_practices/prepares/model_prepare.rb +19 -19
  24. data/lib/rails_best_practices/prepares/route_prepare.rb +34 -34
  25. data/lib/rails_best_practices/prepares/schema_prepare.rb +1 -1
  26. data/lib/rails_best_practices/reviews/add_model_virtual_attribute_review.rb +2 -2
  27. data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +7 -7
  28. data/lib/rails_best_practices/reviews/check_save_return_value_review.rb +1 -1
  29. data/lib/rails_best_practices/reviews/default_scope_is_evil_review.rb +3 -3
  30. data/lib/rails_best_practices/reviews/dry_bundler_in_capistrano_review.rb +3 -3
  31. data/lib/rails_best_practices/reviews/hash_syntax_review.rb +1 -1
  32. data/lib/rails_best_practices/reviews/isolate_seed_data_review.rb +6 -6
  33. data/lib/rails_best_practices/reviews/keep_finders_on_their_own_model_review.rb +2 -2
  34. data/lib/rails_best_practices/reviews/law_of_demeter_review.rb +4 -4
  35. data/lib/rails_best_practices/reviews/move_code_into_controller_review.rb +3 -3
  36. data/lib/rails_best_practices/reviews/move_code_into_helper_review.rb +2 -2
  37. data/lib/rails_best_practices/reviews/move_code_into_model_review.rb +1 -1
  38. data/lib/rails_best_practices/reviews/move_finder_to_named_scope_review.rb +2 -2
  39. data/lib/rails_best_practices/reviews/move_model_logic_into_model_review.rb +1 -1
  40. data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +4 -4
  41. data/lib/rails_best_practices/reviews/not_rescue_exception_review.rb +2 -2
  42. data/lib/rails_best_practices/reviews/not_use_default_route_review.rb +4 -4
  43. data/lib/rails_best_practices/reviews/not_use_time_ago_in_words_review.rb +3 -3
  44. data/lib/rails_best_practices/reviews/overuse_route_customizations_review.rb +2 -2
  45. data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +9 -9
  46. data/lib/rails_best_practices/reviews/remove_empty_helpers_review.rb +3 -3
  47. data/lib/rails_best_practices/reviews/remove_unused_methods_in_controllers_review.rb +11 -11
  48. data/lib/rails_best_practices/reviews/remove_unused_methods_in_helpers_review.rb +1 -1
  49. data/lib/rails_best_practices/reviews/remove_unused_methods_in_models_review.rb +8 -7
  50. data/lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb +2 -2
  51. data/lib/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review.rb +2 -2
  52. data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +22 -22
  53. data/lib/rails_best_practices/reviews/review.rb +2 -2
  54. data/lib/rails_best_practices/reviews/simplify_render_in_controllers_review.rb +3 -3
  55. data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +4 -4
  56. data/lib/rails_best_practices/reviews/use_before_filter_review.rb +2 -2
  57. data/lib/rails_best_practices/reviews/use_model_association_review.rb +2 -2
  58. data/lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb +2 -2
  59. data/lib/rails_best_practices/reviews/use_observer_review.rb +3 -3
  60. data/lib/rails_best_practices/reviews/use_parentheses_in_method_def_review.rb +1 -1
  61. data/lib/rails_best_practices/reviews/use_query_attribute_review.rb +3 -3
  62. data/lib/rails_best_practices/reviews/use_say_with_time_in_migrations_review.rb +2 -2
  63. data/lib/rails_best_practices/reviews/use_scope_access_review.rb +5 -5
  64. data/lib/rails_best_practices/reviews/use_turbo_sprockets_rails3_review.rb +4 -4
  65. data/lib/rails_best_practices/version.rb +1 -1
  66. data/rails_best_practices.gemspec +24 -24
  67. data/spec/rails_best_practices/analyzer_spec.rb +43 -43
  68. data/spec/rails_best_practices/core/check_spec.rb +2 -2
  69. data/spec/rails_best_practices/core/checks_loader_spec.rb +4 -4
  70. data/spec/rails_best_practices/core/error_spec.rb +16 -16
  71. data/spec/rails_best_practices/core/except_methods_spec.rb +15 -15
  72. data/spec/rails_best_practices/core/gems_spec.rb +9 -9
  73. data/spec/rails_best_practices/core/klasses_spec.rb +17 -17
  74. data/spec/rails_best_practices/core/methods_spec.rb +28 -28
  75. data/spec/rails_best_practices/core/model_associations_spec.rb +10 -10
  76. data/spec/rails_best_practices/core/model_attributes_spec.rb +10 -10
  77. data/spec/rails_best_practices/core/modules_spec.rb +10 -10
  78. data/spec/rails_best_practices/core/routes_spec.rb +10 -10
  79. data/spec/rails_best_practices/core/runner_spec.rb +4 -4
  80. data/spec/rails_best_practices/core_ext/erubis_spec.rb +7 -7
  81. data/spec/rails_best_practices/lexicals/long_line_check_spec.rb +7 -7
  82. data/spec/rails_best_practices/lexicals/remove_tab_check_spec.rb +6 -6
  83. data/spec/rails_best_practices/lexicals/remove_trailing_whitespace_check_spec.rb +6 -6
  84. data/spec/rails_best_practices/prepares/config_prepare_spec.rb +3 -3
  85. data/spec/rails_best_practices/prepares/controller_prepare_spec.rb +26 -26
  86. data/spec/rails_best_practices/prepares/gemfile_prepare_spec.rb +3 -3
  87. data/spec/rails_best_practices/prepares/helper_prepare_spec.rb +6 -6
  88. data/spec/rails_best_practices/prepares/initializer_prepare_spec.rb +5 -5
  89. data/spec/rails_best_practices/prepares/mailer_prepare_spec.rb +2 -2
  90. data/spec/rails_best_practices/prepares/model_prepare_spec.rb +108 -108
  91. data/spec/rails_best_practices/prepares/route_prepare_spec.rb +77 -77
  92. data/spec/rails_best_practices/prepares/schema_prepare_spec.rb +8 -8
  93. data/spec/rails_best_practices/reviews/add_model_virtual_attribute_review_spec.rb +10 -10
  94. data/spec/rails_best_practices/reviews/always_add_db_index_review_spec.rb +27 -27
  95. data/spec/rails_best_practices/reviews/check_destroy_return_value_review_spec.rb +11 -11
  96. data/spec/rails_best_practices/reviews/check_save_return_value_review_spec.rb +17 -17
  97. data/spec/rails_best_practices/reviews/default_scope_is_evil_review_spec.rb +6 -6
  98. data/spec/rails_best_practices/reviews/dry_bundler_in_capistrano_review_spec.rb +4 -4
  99. data/spec/rails_best_practices/reviews/hash_syntax_review_spec.rb +8 -8
  100. data/spec/rails_best_practices/reviews/isolate_seed_data_review_spec.rb +10 -10
  101. data/spec/rails_best_practices/reviews/keep_finders_on_their_own_model_review_spec.rb +9 -9
  102. data/spec/rails_best_practices/reviews/law_of_demeter_review_spec.rb +16 -16
  103. data/spec/rails_best_practices/reviews/move_code_into_controller_review_spec.rb +6 -6
  104. data/spec/rails_best_practices/reviews/move_code_into_helper_review_spec.rb +4 -4
  105. data/spec/rails_best_practices/reviews/move_code_into_model_review_spec.rb +13 -13
  106. data/spec/rails_best_practices/reviews/move_finder_to_named_scope_review_spec.rb +7 -7
  107. data/spec/rails_best_practices/reviews/move_model_logic_into_model_review_spec.rb +5 -5
  108. data/spec/rails_best_practices/reviews/needless_deep_nesting_review_spec.rb +10 -10
  109. data/spec/rails_best_practices/reviews/not_rescue_exception_review_spec.rb +8 -8
  110. data/spec/rails_best_practices/reviews/not_use_default_route_review_spec.rb +4 -4
  111. data/spec/rails_best_practices/reviews/not_use_time_ago_in_words_review_spec.rb +11 -11
  112. data/spec/rails_best_practices/reviews/overuse_route_customizations_review_spec.rb +7 -7
  113. data/spec/rails_best_practices/reviews/protect_mass_assignment_review_spec.rb +16 -16
  114. data/spec/rails_best_practices/reviews/remove_empty_helpers_review_spec.rb +5 -5
  115. data/spec/rails_best_practices/reviews/remove_unused_methods_in_controllers_review_spec.rb +33 -33
  116. data/spec/rails_best_practices/reviews/remove_unused_methods_in_helpers_review_spec.rb +7 -7
  117. data/spec/rails_best_practices/reviews/remove_unused_methods_in_models_review_spec.rb +106 -106
  118. data/spec/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review_spec.rb +5 -5
  119. data/spec/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review_spec.rb +8 -8
  120. data/spec/rails_best_practices/reviews/restrict_auto_generated_routes_review_spec.rb +29 -29
  121. data/spec/rails_best_practices/reviews/simplify_render_in_controllers_review_spec.rb +15 -15
  122. data/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb +15 -15
  123. data/spec/rails_best_practices/reviews/use_before_filter_review_spec.rb +7 -7
  124. data/spec/rails_best_practices/reviews/use_model_association_review_spec.rb +7 -7
  125. data/spec/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review_spec.rb +29 -29
  126. data/spec/rails_best_practices/reviews/use_observer_review_spec.rb +6 -6
  127. data/spec/rails_best_practices/reviews/use_parentheses_in_method_def_review_spec.rb +5 -5
  128. data/spec/rails_best_practices/reviews/use_query_attribute_review_spec.rb +28 -28
  129. data/spec/rails_best_practices/reviews/use_say_with_time_in_migrations_review_spec.rb +9 -9
  130. data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +23 -23
  131. data/spec/rails_best_practices/reviews/use_turbo_sprockets_rails3_review_spec.rb +6 -6
  132. data/spec/spec_helper.rb +1 -1
  133. metadata +7 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a21a8ed1b2556fb543a2e0198c20cc0e1717408c
4
- data.tar.gz: 5590f1f768fbe89156474a9b6c6e2d3876f0ab7b
3
+ metadata.gz: 0107d87cb5888b9ef62445563d9af1328cbc9761
4
+ data.tar.gz: 26ff059e4a7437ee9606afbd2c200d27615283fb
5
5
  SHA512:
6
- metadata.gz: 9ade021d411ca4b45c36628ba5a9bed899b0ffcde8b5ca7289171c08aa2493b5c9a04cad2af7758cb50a0f8fdae1f9b5ec4d40396a97145a33d7b32c7630ea82
7
- data.tar.gz: 4ac6bfab4420bac0d7476b2694123fa43d21eb5936a85bdea86f0cb3a17e86d308efac99927aa5325d467bc4bb4b1d6e4c41b7d67405198491add9ee63bf60dc
6
+ metadata.gz: 921598700949438fd5975a90e2091112a2c5296ddf14a11560f7b391a20c7cc6936c875e399327924990128944bdae455bd3311ffcf0473d0bcc4b8f40388719
7
+ data.tar.gz: 50585713ae56c85ee34c38c19c9b4cb13e0fe8e55a2f328b5f3609226ce77680dfc783edccde4614cd48658497161be5bf45c6ac76c863eb28ff2be93be92dc1
@@ -1,5 +1,10 @@
1
1
  # Next Release
2
2
 
3
+ ## 1.19.1
4
+
5
+ * Add table_name and module_prefix to model ignored methods
6
+ * Forcing requrie_all version
7
+
3
8
  ## 1.19.0 (2017-07-26)
4
9
 
5
10
  * RestrictAutoGeneratedRoutesCheck is compatibale with rails api_only
data/Guardfile CHANGED
@@ -1,8 +1,8 @@
1
1
  # A sample Guardfile
2
2
  # More info at https://github.com/guard/guard#readme
3
3
 
4
- guard 'rspec', :version => 2, :all_after_pass => false, :all_on_start => false, :cli => "--color --format nested --fail-fast" do
4
+ guard 'rspec', :version => 2, :all_after_pass => false, :all_on_start => false, :cli => '--color --format nested --fail-fast' do
5
5
  watch(%r{^spec/.+_spec\.rb$})
6
6
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
7
- watch('spec/spec_helper.rb') { "spec" }
7
+ watch('spec/spec_helper.rb') { 'spec' }
8
8
  end
data/Rakefile CHANGED
@@ -1,17 +1,17 @@
1
- require "bundler"
2
- require "bundler/gem_tasks"
1
+ require 'bundler'
2
+ require 'bundler/gem_tasks'
3
3
 
4
4
  Bundler.setup
5
5
 
6
- require "rake"
7
- require "rspec"
8
- require "rspec/core/rake_task"
6
+ require 'rake'
7
+ require 'rspec'
8
+ require 'rspec/core/rake_task'
9
9
 
10
- $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
11
- require "rails_best_practices/version"
10
+ $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
11
+ require 'rails_best_practices/version'
12
12
 
13
13
  RSpec::Core::RakeTask.new(:spec) do |spec|
14
- spec.pattern = "spec/**/*_spec.rb"
14
+ spec.pattern = 'spec/**/*_spec.rb'
15
15
  end
16
16
 
17
17
  task :default => :spec
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
3
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib'))
4
4
 
5
5
  require 'rails_best_practices'
6
6
  require 'rails_best_practices/command'
@@ -17,7 +17,7 @@ module RailsBestPractices
17
17
  attr_accessor :runner
18
18
  attr_reader :path
19
19
 
20
- DEFAULT_CONFIG = File.join(File.dirname(__FILE__), "..", "..", "rails_best_practices.yml")
20
+ DEFAULT_CONFIG = File.join(File.dirname(__FILE__), '..', '..', 'rails_best_practices.yml')
21
21
  GITHUB_URL = 'https://github.com/'
22
22
 
23
23
  # initialize
@@ -25,11 +25,11 @@ module RailsBestPractices
25
25
  # @param [String] path where to generate the configuration yaml file
26
26
  # @param [Hash] options
27
27
  def initialize(path, options = {})
28
- @path = File.expand_path(path || ".")
28
+ @path = File.expand_path(path || '.')
29
29
 
30
30
  @options = options
31
- @options["exclude"] ||= []
32
- @options["only"] ||= []
31
+ @options['exclude'] ||= []
32
+ @options['only'] ||= []
33
33
  end
34
34
 
35
35
  # generate configuration yaml file.
@@ -59,18 +59,18 @@ module RailsBestPractices
59
59
 
60
60
  # Output the analyze result.
61
61
  def output
62
- case @options["format"]
63
- when "html"
64
- @options["output-file"] ||= "rails_best_practices_output.html"
62
+ case @options['format']
63
+ when 'html'
64
+ @options['output-file'] ||= 'rails_best_practices_output.html'
65
65
  output_html_errors
66
- when "json"
67
- @options["output-file"] ||= "rails_best_practices_output.json"
66
+ when 'json'
67
+ @options['output-file'] ||= 'rails_best_practices_output.json'
68
68
  output_json_errors
69
- when "yaml"
70
- @options["output-file"] ||= "rails_best_practices_output.yaml"
69
+ when 'yaml'
70
+ @options['output-file'] ||= 'rails_best_practices_output.yaml'
71
71
  output_yaml_errors
72
- when "xml"
73
- @options["output-file"] ||= "rails_best_practices_output.xml"
72
+ when 'xml'
73
+ @options['output-file'] ||= 'rails_best_practices_output.xml'
74
74
  output_xml_errors
75
75
  else
76
76
  output_terminal_errors
@@ -86,10 +86,10 @@ module RailsBestPractices
86
86
  def process(process)
87
87
  parse_files.each do |file|
88
88
  begin
89
- puts file if @options["debug"]
89
+ puts file if @options['debug']
90
90
  @runner.send(process, file, File.read(file))
91
91
  rescue
92
- if @options["debug"]
92
+ if @options['debug']
93
93
  warning = "#{file} looks like it's not a valid Ruby file. Skipping..."
94
94
  plain_output(warning, 'red')
95
95
  end
@@ -107,17 +107,17 @@ module RailsBestPractices
107
107
  files = expand_dirs_to_files(@path)
108
108
  files = file_sort(files)
109
109
 
110
- if @options["only"].present?
111
- files = file_accept(files, @options["only"])
110
+ if @options['only'].present?
111
+ files = file_accept(files, @options['only'])
112
112
  end
113
113
 
114
114
  # By default, tmp, vender, spec, test, features are ignored.
115
- ["vendor", "spec", "test", "features", "tmp"].each do |dir|
115
+ ['vendor', 'spec', 'test', 'features', 'tmp'].each do |dir|
116
116
  files = file_ignore(files, File.join(@path, dir)) unless @options[dir]
117
117
  end
118
118
 
119
119
  # Exclude files based on exclude regexes if the option is set.
120
- @options["exclude"].each do |pattern|
120
+ @options['exclude'].each do |pattern|
121
121
  files = file_ignore(files, pattern)
122
122
  end
123
123
 
@@ -192,8 +192,8 @@ module RailsBestPractices
192
192
  def load_hg_info
193
193
  hg_progressbar = ProgressBar.create(:title => 'Hg Info', :total => errors.size) if display_bar?
194
194
  errors.each do |error|
195
- hg_info = `cd #{@runner.class.base_path} && hg blame -lvcu #{error.filename[@runner.class.base_path.size..-1].gsub(/^\//, "")} | sed -n /:#{error.line_number.split(',').first}:/p`
196
- unless hg_info == ""
195
+ hg_info = `cd #{@runner.class.base_path} && hg blame -lvcu #{error.filename[@runner.class.base_path.size..-1].gsub(/^\//, '')} | sed -n /:#{error.line_number.split(',').first}:/p`
196
+ unless hg_info == ''
197
197
  hg_commit_username = hg_info.split(':')[0].strip
198
198
  error.hg_username = hg_commit_username.split(/\ /)[0..-2].join(' ')
199
199
  error.hg_commit = hg_commit_username.split(/\ /)[-1]
@@ -209,9 +209,9 @@ module RailsBestPractices
209
209
  start = @runner.class.base_path =~ /\/$/ ? @runner.class.base_path.size : @runner.class.base_path.size + 1
210
210
  errors.each do |error|
211
211
  git_info = `cd #{@runner.class.base_path} && git blame -L #{error.line_number.split(',').first},+1 #{error.filename[start..-1]}`
212
- unless git_info == ""
213
- git_commit, git_username = git_info.split(/\d{4}-\d{2}-\d{2}/).first.split("(")
214
- error.git_commit = git_commit.split(" ").first.strip
212
+ unless git_info == ''
213
+ git_commit, git_username = git_info.split(/\d{4}-\d{2}-\d{2}/).first.split('(')
214
+ error.git_commit = git_commit.split(' ').first.strip
215
215
  error.git_username = git_username.strip
216
216
  end
217
217
  git_progressbar.increment if display_bar?
@@ -222,27 +222,27 @@ module RailsBestPractices
222
222
  # output errors with html format.
223
223
  def output_html_errors
224
224
  require 'erubis'
225
- template = @options["template"] ? File.read(File.expand_path(@options["template"])) : File.read(File.join(File.dirname(__FILE__), "..", "..", "assets", "result.html.erb"))
225
+ template = @options['template'] ? File.read(File.expand_path(@options['template'])) : File.read(File.join(File.dirname(__FILE__), '..', '..', 'assets', 'result.html.erb'))
226
226
 
227
- if @options["with-github"]
228
- last_commit_id = @options["last-commit-id"] ? @options["last-commit-id"] : `cd #{@runner.class.base_path} && git rev-parse HEAD`.chomp
229
- unless @options["github-name"].start_with?('https')
230
- @options["github-name"] = GITHUB_URL + @options["github-name"]
227
+ if @options['with-github']
228
+ last_commit_id = @options['last-commit-id'] ? @options['last-commit-id'] : `cd #{@runner.class.base_path} && git rev-parse HEAD`.chomp
229
+ unless @options['github-name'].start_with?('https')
230
+ @options['github-name'] = GITHUB_URL + @options['github-name']
231
231
  end
232
232
  end
233
- File.open(@options["output-file"], "w+") do |file|
233
+ File.open(@options['output-file'], 'w+') do |file|
234
234
  eruby = Erubis::Eruby.new(template)
235
235
  file.puts eruby.evaluate(
236
236
  errors: errors,
237
237
  error_types: error_types,
238
- textmate: @options["with-textmate"],
239
- sublime: @options["with-sublime"],
240
- mvim: @options["with-mvim"],
241
- github: @options["with-github"],
242
- github_name: @options["github-name"],
238
+ textmate: @options['with-textmate'],
239
+ sublime: @options['with-sublime'],
240
+ mvim: @options['with-mvim'],
241
+ github: @options['with-github'],
242
+ github_name: @options['github-name'],
243
243
  last_commit_id: last_commit_id,
244
- git: @options["with-git"],
245
- hg: @options["with-hg"]
244
+ git: @options['with-git'],
245
+ hg: @options['with-hg']
246
246
  )
247
247
  end
248
248
  end
@@ -272,14 +272,14 @@ module RailsBestPractices
272
272
  end
273
273
 
274
274
  formatter = REXML::Formatters::Default.new
275
- File.open(@options["output-file"], 'w+') do |result|
275
+ File.open(@options['output-file'], 'w+') do |result|
276
276
  formatter.write(document, result)
277
277
  end
278
278
  end
279
279
 
280
280
  # output errors with yaml format.
281
281
  def output_yaml_errors
282
- File.open(@options["output-file"], "w+") do |file|
282
+ File.open(@options['output-file'], 'w+') do |file|
283
283
  file.write YAML.dump(errors)
284
284
  end
285
285
  end
@@ -294,7 +294,7 @@ module RailsBestPractices
294
294
  }
295
295
  end
296
296
 
297
- File.open(@options["output-file"], "w+") do |file|
297
+ File.open(@options['output-file'], 'w+') do |file|
298
298
  file.write JSON.dump(errors_as_hashes)
299
299
  end
300
300
  end
@@ -304,7 +304,7 @@ module RailsBestPractices
304
304
  # @param [String] message to output
305
305
  # @param [String] color
306
306
  def plain_output(message, color)
307
- if @options["without-color"]
307
+ if @options['without-color']
308
308
  puts message
309
309
  else
310
310
  puts Colorize.send(color, message)
@@ -314,19 +314,19 @@ module RailsBestPractices
314
314
  # analyze source codes.
315
315
  def analyze_source_codes
316
316
  @bar = ProgressBar.create(:title => 'Source Code', :total => parse_files.size * 3) if display_bar?
317
- ["lexical", "prepare", "review"].each { |process| send(:process, process) }
317
+ ['lexical', 'prepare', 'review'].each { |process| send(:process, process) }
318
318
  @bar.finish if display_bar?
319
319
  end
320
320
 
321
321
  # analyze version control system info.
322
322
  def analyze_vcs
323
- load_git_info if @options["with-git"]
324
- load_hg_info if @options["with-hg"]
323
+ load_git_info if @options['with-git']
324
+ load_hg_info if @options['with-hg']
325
325
  end
326
326
 
327
327
  # if disaply progress bar.
328
328
  def display_bar?
329
- !@options["debug"] && !@options["silent"]
329
+ !@options['debug'] && !@options['silent']
330
330
  end
331
331
 
332
332
  # unique error types.
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
- require "optparse"
2
+ require 'optparse'
3
3
 
4
4
  # Usage: rails_best_practices [options] path
5
5
  # -d, --debug debug mode
@@ -29,96 +29,96 @@ require "optparse"
29
29
  options = {}
30
30
 
31
31
  OptionParser.new do |opts|
32
- opts.banner = "Usage: rails_best_practices [options] path"
32
+ opts.banner = 'Usage: rails_best_practices [options] path'
33
33
 
34
- opts.on("-d", "--debug", "Debug mode") do
35
- options["debug"] = true
34
+ opts.on('-d', '--debug', 'Debug mode') do
35
+ options['debug'] = true
36
36
  end
37
37
 
38
- opts.on("-f", "--format FORMAT", "output format (text, html, yml, json, xml)") do |format|
39
- options["format"] = format
38
+ opts.on('-f', '--format FORMAT', 'output format (text, html, yml, json, xml)') do |format|
39
+ options['format'] = format
40
40
  end
41
41
 
42
- opts.on("--without-color", "only output plain text without color") do
43
- options["without-color"] = true
42
+ opts.on('--without-color', 'only output plain text without color') do
43
+ options['without-color'] = true
44
44
  end
45
45
 
46
- opts.on("--with-textmate", "open file by textmate in html format") do
47
- options["with-textmate"] = true
46
+ opts.on('--with-textmate', 'open file by textmate in html format') do
47
+ options['with-textmate'] = true
48
48
  end
49
49
 
50
- opts.on("--with-sublime", "open file by sublime in html format") do
51
- options["with-sublime"] = true
50
+ opts.on('--with-sublime', 'open file by sublime in html format') do
51
+ options['with-sublime'] = true
52
52
  end
53
53
 
54
- opts.on("--with-mvim", "open file by mvim in html format") do
55
- options["with-mvim"] = true
54
+ opts.on('--with-mvim', 'open file by mvim in html format') do
55
+ options['with-mvim'] = true
56
56
  end
57
57
 
58
- opts.on("--with-github GITHUB_NAME", "open file on github in html format") do |github_name|
59
- options["with-github"] = true
60
- options["github-name"] = github_name
58
+ opts.on('--with-github GITHUB_NAME', 'open file on github in html format') do |github_name|
59
+ options['with-github'] = true
60
+ options['github-name'] = github_name
61
61
  end
62
62
 
63
- opts.on("--last-commit-id COMMIT_ID", "last commit id") do |commit_id|
64
- options["last-commit-id"] = commit_id
63
+ opts.on('--last-commit-id COMMIT_ID', 'last commit id') do |commit_id|
64
+ options['last-commit-id'] = commit_id
65
65
  end
66
66
 
67
- opts.on("--with-hg", "display hg commit and username, only support html format") do
68
- options["with-hg"] = true
67
+ opts.on('--with-hg', 'display hg commit and username, only support html format') do
68
+ options['with-hg'] = true
69
69
  end
70
70
 
71
- opts.on("--with-git", "display git commit and username, only support html format") do
72
- options["with-git"] = true
71
+ opts.on('--with-git', 'display git commit and username, only support html format') do
72
+ options['with-git'] = true
73
73
  end
74
74
 
75
- opts.on("--template TEMPLATE", "customize erb template") do |template|
76
- options["template"] = template
75
+ opts.on('--template TEMPLATE', 'customize erb template') do |template|
76
+ options['template'] = template
77
77
  end
78
78
 
79
- opts.on("--output-file OUTPUT_FILE", "output html file for the analyzing result") do |output_file|
80
- options["output-file"] = output_file
79
+ opts.on('--output-file OUTPUT_FILE', 'output html file for the analyzing result') do |output_file|
80
+ options['output-file'] = output_file
81
81
  end
82
82
 
83
- opts.on("--silent", "silent mode") do
84
- options["silent"] = true
83
+ opts.on('--silent', 'silent mode') do
84
+ options['silent'] = true
85
85
  end
86
86
 
87
- ["vendor", "spec", "test", "features"].each do |pattern|
87
+ ['vendor', 'spec', 'test', 'features'].each do |pattern|
88
88
  opts.on("--#{pattern}", "include #{pattern} files") do
89
89
  options[pattern] = true
90
90
  end
91
91
  end
92
92
 
93
- opts.on_tail("-v", "--version", "Show this version") do
94
- require "rails_best_practices/version"
93
+ opts.on_tail('-v', '--version', 'Show this version') do
94
+ require 'rails_best_practices/version'
95
95
  puts RailsBestPractices::VERSION
96
96
  exit
97
97
  end
98
98
 
99
- opts.on_tail("-h", "--help", "Show this message") do
99
+ opts.on_tail('-h', '--help', 'Show this message') do
100
100
  puts opts
101
101
  exit
102
102
  end
103
103
 
104
- opts.on("-x", "--exclude PATTERNS", "Don't analyze files matching a pattern", "(comma-separated regexp list)") do |list|
104
+ opts.on('-x', '--exclude PATTERNS', "Don't analyze files matching a pattern", '(comma-separated regexp list)') do |list|
105
105
  begin
106
- options["exclude"] = list.split(",").map{|x| Regexp.new x}
106
+ options['exclude'] = list.split(',').map{|x| Regexp.new x}
107
107
  rescue RegexpError => e
108
108
  raise OptionParser::InvalidArgument, e.message
109
109
  end
110
110
  end
111
111
 
112
- opts.on("-o", "--only PATTERNS", "Analyze files only matching a pattern", "(comma-separated regexp list)") do |list|
112
+ opts.on('-o', '--only PATTERNS', 'Analyze files only matching a pattern', '(comma-separated regexp list)') do |list|
113
113
  begin
114
- options["only"] = list.split(",").map { |x| Regexp.new x }
114
+ options['only'] = list.split(',').map { |x| Regexp.new x }
115
115
  rescue RegexpError => e
116
116
  raise OptionParser::InvalidArgument e.message
117
117
  end
118
118
  end
119
119
 
120
- opts.on("-g", "--generate", "Generate configuration yaml") do
121
- options["generate"] = true
120
+ opts.on('-g', '--generate', 'Generate configuration yaml') do
121
+ options['generate'] = true
122
122
  end
123
123
 
124
124
  opts.on(
@@ -136,7 +136,7 @@ if ARGV.size > 0 && !File.exists?(ARGV.first)
136
136
  exit 1
137
137
  end
138
138
 
139
- if options["generate"]
139
+ if options['generate']
140
140
  RailsBestPractices::Analyzer.new(ARGV.first).generate
141
141
  else
142
142
  analyzer = RailsBestPractices::Analyzer.new(ARGV.first, options)
@@ -183,7 +183,7 @@ module RailsBestPractices
183
183
 
184
184
  # get the current module name.
185
185
  def current_module_name
186
- moduleable_modules.join("::")
186
+ moduleable_modules.join('::')
187
187
  end
188
188
 
189
189
  # modules.
@@ -229,9 +229,9 @@ module RailsBestPractices
229
229
  case node.message.to_s
230
230
  when *skip_command_callback_nodes
231
231
  # nothing
232
- when "alias_method"
232
+ when 'alias_method'
233
233
  mark_used(node.arguments.all[1])
234
- when "alias_method_chain"
234
+ when 'alias_method_chain'
235
235
  method, feature = *node.arguments.all.map(&:to_s)
236
236
  call_method("#{method}_with_#{feature}")
237
237
  when /^(before|after)_/
@@ -261,17 +261,17 @@ module RailsBestPractices
261
261
  # super options.merge(exclude: :visible, methods: [:is_discussion_conversation])
262
262
  # end
263
263
  add_callback :start_bare_assoc_hash do |node|
264
- if node.hash_keys.include? "methods"
265
- mark_used(node.hash_value("methods"))
264
+ if node.hash_keys.include? 'methods'
265
+ mark_used(node.hash_value('methods'))
266
266
  end
267
267
  end
268
268
 
269
269
  # remember the first argument for try and send method.
270
270
  add_callback :start_method_add_arg do |node|
271
271
  case node.message.to_s
272
- when "try"
272
+ when 'try'
273
273
  mark_used(node.arguments.all.first)
274
- when "send"
274
+ when 'send'
275
275
  if [:symbol_literal, :string_literal].include?(node.arguments.all.first.sexp_type)
276
276
  mark_used(node.arguments.all.first)
277
277
  end
@@ -315,21 +315,21 @@ module RailsBestPractices
315
315
 
316
316
  # check if the controller is inherit from InheritedResources::Base.
317
317
  add_callback :start_class do |node|
318
- if "InheritedResources::Base" == current_extend_class_name
318
+ if 'InheritedResources::Base' == current_extend_class_name
319
319
  @inherited_resources = true
320
320
  end
321
321
  end
322
322
 
323
323
  # check if there is a DSL call inherit_resources.
324
324
  add_callback :start_var_ref do |node|
325
- if "inherit_resources" == node.to_s
325
+ if 'inherit_resources' == node.to_s
326
326
  @inherited_resources = true
327
327
  end
328
328
  end
329
329
 
330
330
  # check if there is a DSL call inherit_resources.
331
331
  add_callback :start_vcall do |node|
332
- if "inherit_resources" == node.to_s
332
+ if 'inherit_resources' == node.to_s
333
333
  @inherited_resources = true
334
334
  end
335
335
  end
@@ -352,7 +352,7 @@ module RailsBestPractices
352
352
  end
353
353
 
354
354
  def internal_except_methods
355
- raise NoMethodError.new "no method internal_except_methods"
355
+ raise NoMethodError.new 'no method internal_except_methods'
356
356
  end
357
357
  end
358
358
  end
@@ -360,12 +360,12 @@ module RailsBestPractices
360
360
  def self.matches method, except_method
361
361
  class_name, method_name = except_method.split('#')
362
362
 
363
- method_name = ".*" if method_name == "*"
363
+ method_name = '.*' if method_name == '*'
364
364
  method_expression = Regexp.new method_name
365
365
  matched = method.method_name =~ method_expression
366
366
 
367
367
  if matched
368
- class_name = ".*" if class_name == "*"
368
+ class_name = '.*' if class_name == '*'
369
369
  class_expression = Regexp.new class_name
370
370
 
371
371
  class_names = Prepares.klasses
@@ -403,12 +403,12 @@ module RailsBestPractices
403
403
 
404
404
  # set access control to "public" by default.
405
405
  add_callback :start_class do |node|
406
- @access_control = "public"
406
+ @access_control = 'public'
407
407
  end
408
408
 
409
409
  # set access control to "public" by default.
410
410
  add_callback :start_module do |node|
411
- @access_control = "public"
411
+ @access_control = 'public'
412
412
  end
413
413
  end
414
414