rails_best_practices 1.15.4 → 1.15.6

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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -1
  3. data/Gemfile +1 -0
  4. data/README.md +4 -4
  5. data/assets/result.html.erb +27 -2
  6. data/lib/rails_best_practices/analyzer.rb +33 -1
  7. data/lib/rails_best_practices/command.rb +2 -2
  8. data/lib/rails_best_practices/prepares/route_prepare.rb +1 -1
  9. data/lib/rails_best_practices/reviews/add_model_virtual_attribute_review.rb +2 -2
  10. data/lib/rails_best_practices/reviews/always_add_db_index_review.rb +2 -2
  11. data/lib/rails_best_practices/reviews/check_save_return_value_review.rb +2 -2
  12. data/lib/rails_best_practices/reviews/default_scope_is_evil_review.rb +2 -2
  13. data/lib/rails_best_practices/reviews/dry_bundler_in_capistrano_review.rb +2 -2
  14. data/lib/rails_best_practices/reviews/isolate_seed_data_review.rb +2 -2
  15. data/lib/rails_best_practices/reviews/keep_finders_on_their_own_model_review.rb +2 -2
  16. data/lib/rails_best_practices/reviews/law_of_demeter_review.rb +2 -2
  17. data/lib/rails_best_practices/reviews/move_code_into_controller_review.rb +2 -2
  18. data/lib/rails_best_practices/reviews/move_code_into_helper_review.rb +2 -2
  19. data/lib/rails_best_practices/reviews/move_code_into_model_review.rb +2 -2
  20. data/lib/rails_best_practices/reviews/move_finder_to_named_scope_review.rb +2 -2
  21. data/lib/rails_best_practices/reviews/move_model_logic_into_model_review.rb +2 -2
  22. data/lib/rails_best_practices/reviews/needless_deep_nesting_review.rb +2 -2
  23. data/lib/rails_best_practices/reviews/not_rescue_exception_review.rb +2 -2
  24. data/lib/rails_best_practices/reviews/not_use_default_route_review.rb +2 -2
  25. data/lib/rails_best_practices/reviews/not_use_time_ago_in_words_review.rb +2 -2
  26. data/lib/rails_best_practices/reviews/overuse_route_customizations_review.rb +2 -2
  27. data/lib/rails_best_practices/reviews/protect_mass_assignment_review.rb +2 -2
  28. data/lib/rails_best_practices/reviews/remove_empty_helpers_review.rb +2 -2
  29. data/lib/rails_best_practices/reviews/replace_complex_creation_with_factory_method_review.rb +2 -3
  30. data/lib/rails_best_practices/reviews/replace_instance_variable_with_local_variable_review.rb +2 -3
  31. data/lib/rails_best_practices/reviews/restrict_auto_generated_routes_review.rb +2 -2
  32. data/lib/rails_best_practices/reviews/simplify_render_in_controllers_review.rb +2 -2
  33. data/lib/rails_best_practices/reviews/simplify_render_in_views_review.rb +2 -2
  34. data/lib/rails_best_practices/reviews/use_before_filter_review.rb +3 -3
  35. data/lib/rails_best_practices/reviews/use_model_association_review.rb +2 -2
  36. data/lib/rails_best_practices/reviews/use_multipart_alternative_as_content_type_of_email_review.rb +2 -3
  37. data/lib/rails_best_practices/reviews/use_observer_review.rb +2 -2
  38. data/lib/rails_best_practices/reviews/use_query_attribute_review.rb +2 -2
  39. data/lib/rails_best_practices/reviews/use_say_with_time_in_migrations_review.rb +2 -3
  40. data/lib/rails_best_practices/reviews/use_scope_access_review.rb +2 -2
  41. data/lib/rails_best_practices/reviews/use_turbo_sprockets_rails3_review.rb +2 -2
  42. data/lib/rails_best_practices/version.rb +1 -1
  43. data/rails_best_practices.gemspec +1 -1
  44. data/spec/rails_best_practices/analyzer_spec.rb +10 -0
  45. data/spec/rails_best_practices/prepares/route_prepare_spec.rb +4 -3
  46. data/spec/rails_best_practices/reviews/use_scope_access_review_spec.rb +10 -10
  47. metadata +17 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4f58c94e40ab3dcb7632dc9f975de4133eefb801
4
- data.tar.gz: 5997c946de7c2a0f14a45d65882f6c47ae9b57dd
3
+ metadata.gz: 226e897e70ff9eef8f71618f89f0477e251b98b6
4
+ data.tar.gz: d306ab46262bb3b6cc11efa62c3d46b5ef12a056
5
5
  SHA512:
6
- metadata.gz: ec037490d306afd4d767eaebeb94c782b8c572a07a282f11d123dd964f6711876c4c7b4cbafa7b82b25d8a9bc8a8986dfd4bb6458ffbdcc30f94fe38d17f900d
7
- data.tar.gz: cefcea37746e5a2a92005f5920f8ca7e5ba7a41040e8743a775a4a2ea12bcc4e8cd059b8daae6849a93f777b7e649e40ef8ea30dc5b886bfeb9b46be98c7281f
6
+ metadata.gz: 2a22ae71b9e6b399c29987eb78a0ca19046b2823a2853e82b9e6b6772403daa1e6192b9f68330fefb658800c12547ac49cb0874d3fa615b14bd78a33e25d0f8e
7
+ data.tar.gz: 80cb58e6262aa89f8781c8cfd8cd37b92131c247d2a8d2c114453a3f370b3969e507f458b946a08bf3a6bac7bf029c9b343642a53c15997197a01e1f0a90b967
data/.travis.yml CHANGED
@@ -1,5 +1,7 @@
1
+ sudo: false
1
2
  language: ruby
3
+ cache: bundler
2
4
  rvm:
3
5
  - 1.9.3
4
6
  - 2.0.0
5
- - 2.1.1
7
+ - 2.1
data/Gemfile CHANGED
@@ -9,4 +9,5 @@ if RUBY_PLATFORM =~ /darwin/i
9
9
  end
10
10
  gem 'pry'
11
11
  gem 'guard'
12
+ gem 'rspec', '~> 2.14.0'
12
13
  gem 'guard-rspec'
data/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  [![Coderwall Endorse](http://api.coderwall.com/flyerhzm/endorsecount.png)](http://coderwall.com/flyerhzm)
8
8
  [![Click here to lend your support to: rails best practices and make a donation at www.pledgie.com !](https://pledgie.com/campaigns/12057.png?skin_name=chrome)](https://pledgie.com/campaigns/12057)
9
9
 
10
- rails_best_practices is a code metric tool to check the quality of rails codes.
10
+ rails_best_practices is a code metric tool to check the quality of rails code.
11
11
 
12
12
  it supports following ORM/ODMs:
13
13
 
@@ -40,14 +40,14 @@ or html output
40
40
 
41
41
  rails_best_practices -f html .
42
42
 
43
- By default rails_best_practices will do parse codes in vendor, spec, test and features directories.
43
+ By default rails_best_practices will do parse codes in vendor, spec, test and features directories.
44
44
 
45
45
  ### Excluding folders
46
46
 
47
47
  To exclude folder simply call it with -e or --exclude
48
48
 
49
49
  rails_best_practices -e "db/migrate" .
50
-
50
+
51
51
  To exclude multiple folders, separate them with comma
52
52
 
53
53
  rails_best_practices -e "db/migrate,vendor" .
@@ -57,7 +57,7 @@ To exclude multiple folders, separate them with comma
57
57
  To see full list of commandline options call:
58
58
 
59
59
  $ rails_best_practices -h
60
-
60
+
61
61
  Usage: rails_best_practices [options]
62
62
  -d, --debug Debug mode
63
63
  -f, --format FORMAT output format
@@ -47,6 +47,9 @@
47
47
  display: none;
48
48
  float: left;
49
49
  }
50
+ .result tbody tr{
51
+ display: none;
52
+ }
50
53
  </style>
51
54
  <%
52
55
  def columnize(arr, col_count)
@@ -140,23 +143,45 @@
140
143
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
141
144
  <script type="text/javascript">
142
145
  $(function() {
143
- $('ul li').show();
144
- $('input.error-type[type=checkbox]').prop('checked', true).click(function() {
146
+
147
+ keys = location.hash.slice(2).split("|");
148
+ keys = keys.filter(function(item){
149
+ return item != "";
150
+ });
151
+ keys.forEach(function(item){
152
+ $('.'+item).show();
153
+ $('input.error-type#'+item+'[type=checkbox]').prop('checked', true);
154
+ });
155
+
156
+ $('input.error-type[type=checkbox]').click(function() {
145
157
  if ($(this).attr('checked')) {
146
158
  $(this).prop('checked', true);
147
159
  $('.'+$(this).val()).show();
160
+
161
+ new_hash = location.hash.replace("|"+$(this).val().toString(), "");
162
+ location.hash = new_hash+"|"+$(this).val();
148
163
  } else {
149
164
  $(this).prop('checked', false);
150
165
  $('.'+$(this).val()).hide();
166
+
167
+ new_hash = location.hash.replace("|"+$(this).val().toString(), "");
168
+ location.hash = new_hash
151
169
  }
152
170
  });
171
+
153
172
  $('#show-all').click(function() {
173
+ $('input.error-type[type=checkbox]').each(function(index, item){
174
+ new_hash = location.hash.replace("|"+$(item).val().toString(), "");
175
+ location.hash = new_hash+"|"+$(item).val();
176
+ });
154
177
  $('input.error-type[type=checkbox]').prop('checked', true);
155
178
  $('table.result tbody tr').show();
156
179
  });
180
+
157
181
  $('#show-none').click(function() {
158
182
  $('input.error-type[type=checkbox]').prop('checked', false);
159
183
  $('table.result tbody tr').hide();
184
+ location.hash = "";
160
185
  });
161
186
  });
162
187
  </script>
@@ -1,5 +1,4 @@
1
1
  # encoding: utf-8
2
- require 'ap'
3
2
  require 'colored'
4
3
  require 'fileutils'
5
4
  require 'json'
@@ -70,6 +69,9 @@ module RailsBestPractices
70
69
  when "yaml"
71
70
  @options["output-file"] ||= "rails_best_practices_output.yaml"
72
71
  output_yaml_errors
72
+ when "xml"
73
+ @options["output-file"] ||= "rails_best_practices_output.xml"
74
+ output_xml_errors
73
75
  else
74
76
  output_terminal_errors
75
77
  end
@@ -246,6 +248,36 @@ module RailsBestPractices
246
248
  end
247
249
  end
248
250
 
251
+ def output_xml_errors
252
+ require 'rexml/document'
253
+
254
+ document = REXML::Document.new.tap do |d|
255
+ d << REXML::XMLDecl.new
256
+ end
257
+
258
+ checkstyle = REXML::Element.new('checkstyle', document)
259
+
260
+ errors.group_by(&:filename).each do |file, group|
261
+ REXML::Element.new('file', checkstyle).tap do |f|
262
+ f.attributes['name'] = file
263
+ group.each do |error|
264
+ REXML::Element.new('error', f).tap do |e|
265
+ e.attributes['line'] = error.line_number
266
+ e.attributes['column'] = 0
267
+ e.attributes['severity'] = 'error'
268
+ e.attributes['message'] = error.message
269
+ e.attributes['source'] = 'com.puppycrawl.tools.checkstyle.' + error.type
270
+ end
271
+ end
272
+ end
273
+ end
274
+
275
+ formatter = REXML::Formatters::Default.new
276
+ File.open(@options["output-file"], 'w+') do |result|
277
+ formatter.write(document, result)
278
+ end
279
+ end
280
+
249
281
  # output errors with yaml format.
250
282
  def output_yaml_errors
251
283
  File.open(@options["output-file"], "w+") do |file|
@@ -4,7 +4,7 @@ require "optparse"
4
4
  # Usage: rails_best_practices [options] path
5
5
  # -d, --debug debug mode
6
6
  # --silent silent mode
7
- # -f, --format FORMAT output format (text, html, yml, json)
7
+ # -f, --format FORMAT output format (text, html, yml, json, xml)
8
8
  # --output-file FILE output html file for the analyzing result
9
9
  # --without-color only output plain text without color
10
10
  # --with-textmate open file by textmate in html format
@@ -35,7 +35,7 @@ OptionParser.new do |opts|
35
35
  options["debug"] = true
36
36
  end
37
37
 
38
- opts.on("-f", "--format FORMAT", "output format (text, html, yml, json)") do |format|
38
+ opts.on("-f", "--format FORMAT", "output format (text, html, yml, json, xml)") do |format|
39
39
  options["format"] = format
40
40
  end
41
41
 
@@ -22,7 +22,7 @@ module RailsBestPractices
22
22
  add_resources_routes(node)
23
23
  when "resource"
24
24
  add_resource_routes(node)
25
- when "get", "post", "put", "delete"
25
+ when "get", "post", "put", "patch", "delete"
26
26
  first_argument = node.arguments.all.first
27
27
  second_argument = node.arguments.all[1]
28
28
  if @controller_names.last
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Make sure to add a model virual attribute to simplify model creation.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/4-add-model-virtual-attribute
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/21/add-model-virtual-attribute/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -16,7 +16,7 @@ module RailsBestPractices
16
16
  class AddModelVirtualAttributeReview < Review
17
17
  interesting_nodes :def
18
18
  interesting_files CONTROLLER_FILES
19
- url "http://rails-bestpractices.com/posts/4-add-model-virtual-attribute"
19
+ url "http://rails-bestpractices.com/posts/2010/07/21/add-model-virtual-attribute/"
20
20
 
21
21
  # check method define nodes to see if there are some attribute assignments that can use model virtual attribute instead in review process.
22
22
  #
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review db/schema.rb file to make sure every reference key has a database index.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/21-always-add-db-index
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/24/always-add-db-index/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -24,7 +24,7 @@ module RailsBestPractices
24
24
  class AlwaysAddDbIndexReview < Review
25
25
  interesting_nodes :command, :command_call
26
26
  interesting_files SCHEMA_FILE
27
- url "http://rails-bestpractices.com/posts/21-always-add-db-index"
27
+ url "http://rails-bestpractices.com/posts/2010/07/24/always-add-db-index/"
28
28
 
29
29
  def initialize(options={})
30
30
  super(options)
@@ -4,7 +4,7 @@ module RailsBestPractices
4
4
  # Review all code to make sure we either check the return value of "save"
5
5
  # or use "save!"
6
6
  #
7
- # See the best practice details here http://rails-bestpractices.com/posts/703-check-the-return-value-of-save-otherwise-use-save
7
+ # See the best practice details here http://rails-bestpractices.com/posts/2012/11/02/check-the-return-value-of-save-otherwise-use-save/
8
8
  #
9
9
  # Implementation:
10
10
  #
@@ -15,7 +15,7 @@ module RailsBestPractices
15
15
  include Classable
16
16
  interesting_nodes :call, :command_call, :method_add_arg, :if, :ifop, :elsif, :unless, :if_mod, :unless_mod, :assign, :binary
17
17
  interesting_files ALL_FILES
18
- url "http://rails-bestpractices.com/posts/703-check-the-return-value-of-save-otherwise-use-save"
18
+ url "http://rails-bestpractices.com/posts/2012/11/02/check-the-return-value-of-save-otherwise-use-save/"
19
19
 
20
20
  add_callback :start_if, :start_ifop, :start_elsif, :start_unless, :start_if_mod, :start_unless_mod do |node|
21
21
  @used_return_value_of = node.conditional_statement.all_conditions
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review model files to make sure not use default_scope
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/806-default_scope-is-evil
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2013/06/15/default_scope-is-evil/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -12,7 +12,7 @@ module RailsBestPractices
12
12
  class DefaultScopeIsEvilReview < Review
13
13
  interesting_nodes :command
14
14
  interesting_files MODEL_FILES
15
- url "http://rails-bestpractices.com/posts/806-default_scope-is-evil"
15
+ url "http://rails-bestpractices.com/posts/2013/06/15/default_scope-is-evil/"
16
16
 
17
17
  # check all command nodes' message
18
18
  add_callback :start_command do |node|
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review config/deploy.rb file to make sure using the bundler's capistrano recipe.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/51-dry-bundler-in-capistrano
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/09/02/dry-bundler-in-capistrano/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -15,7 +15,7 @@ module RailsBestPractices
15
15
  class DryBundlerInCapistranoReview < Review
16
16
  interesting_nodes :command
17
17
  interesting_files DEPLOY_FILES
18
- url "http://rails-bestpractices.com/posts/51-dry-bundler-in-capistrano"
18
+ url "http://rails-bestpractices.com/posts/2010/09/02/dry-bundler-in-capistrano/"
19
19
 
20
20
  # check call node to see if it is with message "namespace" and argument "bundler".
21
21
  add_callback :start_command do |node|
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Make sure not to insert data in migration, move them to seed file.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/20-isolating-seed-data.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/24/isolating-seed-data/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -21,7 +21,7 @@ module RailsBestPractices
21
21
  class IsolateSeedDataReview < Review
22
22
  interesting_nodes :call, :assign
23
23
  interesting_files MIGRATION_FILES
24
- url "http://rails-bestpractices.com/posts/20-isolating-seed-data"
24
+ url "http://rails-bestpractices.com/posts/2010/07/24/isolating-seed-data/"
25
25
 
26
26
  def initialize(options={})
27
27
  super(options)
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review model files to make sure finders are on their own model.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/13-keep-finders-on-their-own-model.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/23/keep-finders-on-their-own-model/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -17,7 +17,7 @@ module RailsBestPractices
17
17
  class KeepFindersOnTheirOwnModelReview < Review
18
18
  interesting_nodes :method_add_arg
19
19
  interesting_files MODEL_FILES
20
- url "http://rails-bestpractices.com/posts/13-keep-finders-on-their-own-model"
20
+ url "http://rails-bestpractices.com/posts/2010/07/23/keep-finders-on-their-own-model/"
21
21
 
22
22
  FINDERS = %w(find all first last)
23
23
 
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review to make sure not to avoid the law of demeter.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/15-the-law-of-demeter.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/24/the-law-of-demeter/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -16,7 +16,7 @@ module RailsBestPractices
16
16
  class LawOfDemeterReview < Review
17
17
  interesting_nodes :call
18
18
  interesting_files ALL_FILES
19
- url "http://rails-bestpractices.com/posts/15-the-law-of-demeter"
19
+ url "http://rails-bestpractices.com/posts/2010/07/24/the-law-of-demeter/"
20
20
 
21
21
  ASSOCIATION_METHODS = %w(belongs_to has_one)
22
22
 
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review a view file to make sure there is no finder, finder should be moved to controller.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/24-move-code-into-controller.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/24/move-code-into-controller/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -12,7 +12,7 @@ module RailsBestPractices
12
12
  class MoveCodeIntoControllerReview < Review
13
13
  interesting_nodes :method_add_arg, :assign
14
14
  interesting_files VIEW_FILES
15
- url "http://rails-bestpractices.com/posts/24-move-code-into-controller"
15
+ url "http://rails-bestpractices.com/posts/2010/07/24/move-code-into-controller/"
16
16
 
17
17
  FINDERS = %w(find all first last)
18
18
 
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review a view file to make sure there is no complex options_for_select message call.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/26-move-code-into-helper.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/24/move-code-into-helper/
7
7
  #
8
8
  # TODO: we need a better soluation, any suggestion?
9
9
  #
@@ -19,7 +19,7 @@ module RailsBestPractices
19
19
  class MoveCodeIntoHelperReview < Review
20
20
  interesting_nodes :method_add_arg
21
21
  interesting_files VIEW_FILES
22
- url "http://rails-bestpractices.com/posts/26-move-code-into-helper"
22
+ url "http://rails-bestpractices.com/posts/2010/07/24/move-code-into-helper/"
23
23
 
24
24
  def initialize(options = {})
25
25
  super(options)
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review a view file to make sure there is no complex logic call for model.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/25-move-code-into-model.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/24/move-code-into-model/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -13,7 +13,7 @@ module RailsBestPractices
13
13
  class MoveCodeIntoModelReview < Review
14
14
  interesting_nodes :if, :unless, :elsif, :ifop, :if_mod, :unless_mod
15
15
  interesting_files VIEW_FILES
16
- url "http://rails-bestpractices.com/posts/25-move-code-into-model"
16
+ url "http://rails-bestpractices.com/posts/2010/07/24/move-code-into-model/"
17
17
 
18
18
  def initialize(options={})
19
19
  super(options)
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review a controller file to make sure there are no complex finder.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/1-move-finder-to-named_scope.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/14/move-finder-to-named_scope/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -15,7 +15,7 @@ module RailsBestPractices
15
15
  class MoveFinderToNamedScopeReview < Review
16
16
  interesting_nodes :method_add_arg
17
17
  interesting_files CONTROLLER_FILES
18
- url "http://rails-bestpractices.com/posts/1-move-finder-to-named_scope"
18
+ url "http://rails-bestpractices.com/posts/2010/07/14/move-finder-to-named_scope/"
19
19
 
20
20
  FINDERS = %w(find all first last)
21
21
 
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review a controller file to make sure that complex model logic should not exist in controller, should be moved into a model.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/7-move-model-logic-into-the-model.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/21/move-model-logic-into-the-model/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -15,7 +15,7 @@ module RailsBestPractices
15
15
  class MoveModelLogicIntoModelReview < Review
16
16
  interesting_nodes :def
17
17
  interesting_files CONTROLLER_FILES
18
- url "http://rails-bestpractices.com/posts/7-move-model-logic-into-the-model"
18
+ url "http://rails-bestpractices.com/posts/2010/07/21/move-model-logic-into-the-model/"
19
19
 
20
20
  def initialize(options = {})
21
21
  super(options)
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review config/routes.rb file to make sure not to use too deep nesting routes.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/11-needless-deep-nesting.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/22/needless-deep-nesting/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -24,7 +24,7 @@ module RailsBestPractices
24
24
  class NeedlessDeepNestingReview < Review
25
25
  interesting_nodes :method_add_block
26
26
  interesting_files ROUTE_FILES
27
- url "http://rails-bestpractices.com/posts/11-needless-deep-nesting"
27
+ url "http://rails-bestpractices.com/posts/2010/07/22/needless-deep-nesting/"
28
28
 
29
29
  def initialize(options = {})
30
30
  super(options)
@@ -4,7 +4,7 @@ module RailsBestPractices
4
4
  # Review all code to make sure we don't rescue Exception
5
5
  # This is a common mistake by Java or C# devs in ruby.
6
6
  #
7
- # See the best practice details here http://rails-bestpractices.com/posts/702-don-t-rescue-exception-rescue-standarderror
7
+ # See the best practice details here http://rails-bestpractices.com/posts/2012/11/01/don-t-rescue-exception-rescue-standarderror/
8
8
  #
9
9
  # Implementation:
10
10
  #
@@ -13,7 +13,7 @@ module RailsBestPractices
13
13
  class NotRescueExceptionReview < Review
14
14
  interesting_nodes :rescue
15
15
  interesting_files ALL_FILES
16
- url "http://rails-bestpractices.com/posts/702-don-t-rescue-exception-rescue-standarderror"
16
+ url "http://rails-bestpractices.com/posts/2012/11/01/don-t-rescue-exception-rescue-standarderror/"
17
17
 
18
18
  # check rescue node to see if its type is Exception
19
19
  add_callback :start_rescue do |rescue_node|
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review config/routes file to make sure not use default route that rails generated.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/12-not-use-default-route-if-you-use-restful-design
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/22/not-use-default-route-if-you-use-restful-design/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -19,7 +19,7 @@ module RailsBestPractices
19
19
  class NotUseDefaultRouteReview < Review
20
20
  interesting_nodes :command_call, :command
21
21
  interesting_files ROUTE_FILES
22
- url "http://rails-bestpractices.com/posts/12-not-use-default-route-if-you-use-restful-design"
22
+ url "http://rails-bestpractices.com/posts/2010/07/22/not-use-default-route-if-you-use-restful-design/"
23
23
 
24
24
  # check all command call nodes, compare with rails2 default route
25
25
  add_callback :start_command_call do |node|
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review view and helper files to make sure not use time_ago_in_words or distance_of_time_in_words_to_now.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/105-not-use-time_ago_in_words.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2012/02/10/not-use-time_ago_in_words/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -12,7 +12,7 @@ module RailsBestPractices
12
12
  class NotUseTimeAgoInWordsReview < Review
13
13
  interesting_nodes :fcall
14
14
  interesting_files VIEW_FILES, HELPER_FILES
15
- url "http://rails-bestpractices.com/posts/105-not-use-time_ago_in_words"
15
+ url "http://rails-bestpractices.com/posts/2012/02/10/not-use-time_ago_in_words/"
16
16
 
17
17
  # check fcall node to see if its message is time_ago_in_words or distance_of_time_in_words_to_now
18
18
  add_callback :start_fcall do |node|
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review config/routes.rb file to make sure there are no overuse route customizations.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/10-overuse-route-customizations.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/22/overuse-route-customizations/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -28,7 +28,7 @@ module RailsBestPractices
28
28
  class OveruseRouteCustomizationsReview < Review
29
29
  interesting_nodes :command_call, :method_add_block
30
30
  interesting_files ROUTE_FILES
31
- url "http://rails-bestpractices.com/posts/10-overuse-route-customizations"
31
+ url "http://rails-bestpractices.com/posts/2010/07/22/overuse-route-customizations/"
32
32
 
33
33
  VERBS = %w(get post update delete)
34
34
 
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review model files to make sure to use attr_accessible, attr_protected or strong_parameters to protect mass assignment.
5
5
  #
6
- # See the best practices details here http://rails-bestpractices.com/posts/148-protect-mass-assignment.
6
+ # See the best practices details here http://rails-bestpractices.com/posts/2012/03/06/protect-mass-assignment/
7
7
  #
8
8
  # Implmentation:
9
9
  #
@@ -13,7 +13,7 @@ module RailsBestPractices
13
13
  class ProtectMassAssignmentReview < Review
14
14
  interesting_files MODEL_FILES
15
15
  interesting_nodes :class, :command, :var_ref, :vcall, :fcall
16
- url "http://rails-bestpractices.com/posts/148-protect-mass-assignment"
16
+ url "http://rails-bestpractices.com/posts/2012/03/06/protect-mass-assignment/"
17
17
 
18
18
  # we treat it as mass assignment by default.
19
19
  add_callback :start_class do |node|
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review a helper file to make sure it is not an empty moduel.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/72-remove-empty-helpers.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2011/04/09/remove-empty-helpers/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -12,7 +12,7 @@ module RailsBestPractices
12
12
  class RemoveEmptyHelpersReview < Review
13
13
  interesting_nodes :module
14
14
  interesting_files HELPER_FILES
15
- url "http://rails-bestpractices.com/posts/72-remove-empty-helpers"
15
+ url "http://rails-bestpractices.com/posts/2011/04/09/remove-empty-helpers/"
16
16
 
17
17
  # check the body of module node, if it is nil, then it should be removed.
18
18
  add_callback :start_module do |module_node|
@@ -4,8 +4,7 @@ module RailsBestPractices
4
4
  # Review a controller file to make sure that complex model creation should not exist in
5
5
  # controller, should be replaced with factory method.
6
6
  #
7
- # See the best practice details here
8
- # http://rails-bestpractices.com/posts/6-replace-complex-creation-with-factory-method.
7
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/21/replace-complex-creation-with-factory-method/
9
8
  #
10
9
  # Implementation:
11
10
  #
@@ -18,7 +17,7 @@ module RailsBestPractices
18
17
  class ReplaceComplexCreationWithFactoryMethodReview < Review
19
18
  interesting_nodes :def
20
19
  interesting_files CONTROLLER_FILES
21
- url "http://rails-bestpractices.com/posts/6-replace-complex-creation-with-factory-method"
20
+ url "http://rails-bestpractices.com/posts/2010/07/21/replace-complex-creation-with-factory-method/"
22
21
 
23
22
  def initialize(options = {})
24
23
  super(options)
@@ -3,8 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review a partail view file to make sure there is no instance variable.
5
5
  #
6
- # See the best practice details here
7
- # http://rails-bestpractices.com/posts/27-replace-instance-variable-with-local-variable.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/24/replace-instance-variable-with-local-variable/
8
7
  #
9
8
  # Implementation:
10
9
  #
@@ -14,7 +13,7 @@ module RailsBestPractices
14
13
  class ReplaceInstanceVariableWithLocalVariableReview < Review
15
14
  interesting_nodes :var_ref, :vcall
16
15
  interesting_files PARTIAL_VIEW_FILES
17
- url "http://rails-bestpractices.com/posts/27-replace-instance-variable-with-local-variable"
16
+ url "http://rails-bestpractices.com/posts/2010/07/24/replace-instance-variable-with-local-variable/"
18
17
 
19
18
  # check ivar node in partial view file,
20
19
  # it is an instance variable, and should be replaced with local variable.
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review a route file to make sure all auto-generated routes have corresponding actions in controller.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/86-restrict-auto-generated-routes
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2011/08/19/restrict-auto-generated-routes/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -15,7 +15,7 @@ module RailsBestPractices
15
15
  class RestrictAutoGeneratedRoutesReview < Review
16
16
  interesting_nodes :command, :command_call, :method_add_block
17
17
  interesting_files ROUTE_FILES
18
- url "http://rails-bestpractices.com/posts/86-restrict-auto-generated-routes"
18
+ url "http://rails-bestpractices.com/posts/2011/08/19/restrict-auto-generated-routes/"
19
19
 
20
20
  RESOURCE_METHODS = ["show", "new", "create", "edit", "update", "destroy"]
21
21
  RESOURCES_METHODS = RESOURCE_METHODS + ["index"]
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review a controller file to make sure using simplified syntax for render.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/62-simplify-render-in-controllers.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/12/12/simplify-render-in-controllers/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -14,7 +14,7 @@ module RailsBestPractices
14
14
  class SimplifyRenderInControllersReview < Review
15
15
  interesting_nodes :command
16
16
  interesting_files CONTROLLER_FILES
17
- url "http://rails-bestpractices.com/posts/62-simplify-render-in-controllers"
17
+ url "http://rails-bestpractices.com/posts/2010/12/12/simplify-render-in-controllers/"
18
18
 
19
19
  # check command node in the controller file,
20
20
  # if its message is render and the arguments contain a key action, template or file,
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review a view file to make sure using simplified syntax for render.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/61-simplify-render-in-views.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/12/04/simplify-render-in-views/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -13,7 +13,7 @@ module RailsBestPractices
13
13
  class SimplifyRenderInViewsReview < Review
14
14
  interesting_nodes :command
15
15
  interesting_files VIEW_FILES
16
- url "http://rails-bestpractices.com/posts/61-simplify-render-in-views"
16
+ url "http://rails-bestpractices.com/posts/2010/12/04/simplify-render-in-views/"
17
17
 
18
18
  VALID_KEYS = %w(object collection locals)
19
19
 
@@ -4,7 +4,7 @@ module RailsBestPractices
4
4
  # Review a controller file to make sure to use before_filter to remove duplicated first code
5
5
  # line_number in different action.
6
6
  #
7
- # See the best practice detailed here http://rails-bestpractices.com/posts/22-use-before_filter.
7
+ # See the best practice detailed here http://rails-bestpractices.com/posts/2010/07/24/use-before_filter/
8
8
  #
9
9
  # Implementation:
10
10
  #
@@ -14,7 +14,7 @@ module RailsBestPractices
14
14
  class UseBeforeFilterReview < Review
15
15
  interesting_nodes :class
16
16
  interesting_files CONTROLLER_FILES
17
- url "http://rails-bestpractices.com/posts/22-use-before_filter"
17
+ url "http://rails-bestpractices.com/posts/2010/07/24/use-before_filter/"
18
18
 
19
19
  def initialize(options = {})
20
20
  super()
@@ -49,7 +49,7 @@ module RailsBestPractices
49
49
  def remember_first_sentence(node)
50
50
  first_sentence = node.body.statements.first
51
51
  return unless first_sentence
52
- first_sentence = first_sentence.remove_line_number_and_column
52
+ first_sentence = first_sentence.remove_line_and_column
53
53
  unless first_sentence == s(:nil)
54
54
  @first_sentences[first_sentence] ||= []
55
55
  @first_sentences[first_sentence] << node
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # review a controller file to make sure to use model association instead of foreign key id assignment.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/2-use-model-association.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/19/use-model-association/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -16,7 +16,7 @@ module RailsBestPractices
16
16
  class UseModelAssociationReview < Review
17
17
  interesting_nodes :def
18
18
  interesting_files CONTROLLER_FILES
19
- url "http://rails-bestpractices.com/posts/2-use-model-association"
19
+ url "http://rails-bestpractices.com/posts/2010/07/19/use-model-association/"
20
20
 
21
21
  # check method define nodes to see if there are some attribute assignments that can use model association instead.
22
22
  #
@@ -3,8 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Make sure to use multipart/alternative as content_type of email.
5
5
  #
6
- # See the best practice details here
7
- # http://rails-bestpractices.com/posts/41-use-multipart-alternative-as-content_type-of-email.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/08/05/use-multipart-alternative-as-content_type-of-email/
8
7
  #
9
8
  # Implementation:
10
9
  #
@@ -14,7 +13,7 @@ module RailsBestPractices
14
13
  class UseMultipartAlternativeAsContentTypeOfEmailReview < Review
15
14
  interesting_nodes :class, :def
16
15
  interesting_files MAILER_FILES
17
- url "http://rails-bestpractices.com/posts/41-use-multipart-alternative-as-content_type-of-email"
16
+ url "http://rails-bestpractices.com/posts/2010/08/05/use-multipart-alternative-as-content_type-of-email/"
18
17
 
19
18
  # check class node to remember the ActionMailer class name.
20
19
  add_callback :start_class do |node|
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Make sure to use observer (sorry we only check the mailer deliver now).
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/19-use-observer.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/24/use-observer/
7
7
  #
8
8
  # TODO: we need a better solution, any suggestion?
9
9
  #
@@ -20,7 +20,7 @@ module RailsBestPractices
20
20
  class UseObserverReview < Review
21
21
  interesting_nodes :def, :command
22
22
  interesting_files MODEL_FILES
23
- url "http://rails-bestpractices.com/posts/19-use-observer"
23
+ url "http://rails-bestpractices.com/posts/2010/07/24/use-observer/"
24
24
 
25
25
  def initialize(options = {})
26
26
  super
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Make sure to use query attribute instead of nil?, blank? and present?.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/56-use-query-attribute.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/10/03/use-query-attribute/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -16,7 +16,7 @@ module RailsBestPractices
16
16
  class UseQueryAttributeReview < Review
17
17
  interesting_nodes :if, :unless, :elsif, :ifop, :if_mod, :unless_mod
18
18
  interesting_files ALL_FILES
19
- url "http://rails-bestpractices.com/posts/56-use-query-attribute"
19
+ url "http://rails-bestpractices.com/posts/2010/10/03/use-query-attribute/"
20
20
 
21
21
  QUERY_METHODS = %w(nil? blank? present?)
22
22
 
@@ -4,8 +4,7 @@ module RailsBestPractices
4
4
  # Review a migration file to make sure to use say or say_with_time for customized data changes
5
5
  # to produce a more readable output.
6
6
  #
7
- # See the best practice detials here
8
- # http://rails-bestpractices.com/posts/46-use-say-and-say_with_time-in-migrations-to-make-a-useful-migration-log.
7
+ # See the best practice detials here http://rails-bestpractices.com/posts/2010/08/19/use-say-and-say_with_time-in-migrations-to-make-a-useful-migration-log/
9
8
  #
10
9
  # Implementation:
11
10
  #
@@ -17,7 +16,7 @@ module RailsBestPractices
17
16
  class UseSayWithTimeInMigrationsReview < Review
18
17
  interesting_nodes :defs
19
18
  interesting_files MIGRATION_FILES
20
- url "http://rails-bestpractices.com/posts/46-use-say-and-say_with_time-in-migrations-to-make-a-useful-migration-log"
19
+ url "http://rails-bestpractices.com/posts/2010/08/19/use-say-and-say_with_time-in-migrations-to-make-a-useful-migration-log/"
21
20
 
22
21
  WITH_SAY_METHODS = %w(say say_with_time)
23
22
 
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Review a controller to make sure to use scope access instead of manually checking current_user and redirect.
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/3-use-scope-access.
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2010/07/20/use-scope-access/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -16,7 +16,7 @@ module RailsBestPractices
16
16
  class UseScopeAccessReview < Review
17
17
  interesting_nodes :if, :unless, :elsif, :ifop, :if_mod, :unless_mod
18
18
  interesting_files CONTROLLER_FILES
19
- url "http://rails-bestpractices.com/posts/3-use-scope-access"
19
+ url "http://rails-bestpractices.com/posts/2010/07/20/use-scope-access/"
20
20
 
21
21
  # check if node.
22
22
  #
@@ -3,7 +3,7 @@ module RailsBestPractices
3
3
  module Reviews
4
4
  # Prepare Gemfile and review Capfile file to make sure using turbo-sprocket-rails3
5
5
  #
6
- # See the best practice details here http://rails-bestpractices.com/posts/704-speed-up-assets-precompile-with-turbo-sprockets-rails3
6
+ # See the best practice details here http://rails-bestpractices.com/posts/2012/11/23/speed-up-assets-precompile-with-turbo-sprockets-rails3/
7
7
  #
8
8
  # Implementation:
9
9
  #
@@ -12,7 +12,7 @@ module RailsBestPractices
12
12
  class UseTurboSprocketsRails3Review < Review
13
13
  interesting_nodes :command
14
14
  interesting_files CAPFILE
15
- url "http://rails-bestpractices.com/posts/704-speed-up-assets-precompile-with-turbo-sprockets-rails3"
15
+ url "http://rails-bestpractices.com/posts/2012/11/23/speed-up-assets-precompile-with-turbo-sprockets-rails3/"
16
16
 
17
17
  # check command node to see if load 'deploy/assets'
18
18
  add_callback :start_command do |node|
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module RailsBestPractices
3
- VERSION = "1.15.4"
3
+ VERSION = "1.15.6"
4
4
  end
@@ -16,7 +16,6 @@ Gem::Specification.new do |s|
16
16
  s.required_rubygems_version = ">= 1.3.6"
17
17
 
18
18
  s.add_dependency("activesupport")
19
- s.add_dependency("awesome_print")
20
19
  s.add_dependency("code_analyzer", ">= 0.4.3")
21
20
  s.add_dependency("colored")
22
21
  s.add_dependency("erubis")
@@ -30,6 +29,7 @@ Gem::Specification.new do |s|
30
29
  s.add_development_dependency("haml")
31
30
  s.add_development_dependency("slim")
32
31
  s.add_development_dependency("bundler")
32
+ s.add_development_dependency("awesome_print")
33
33
 
34
34
  s.files = `git ls-files`.split("\n")
35
35
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -47,6 +47,7 @@ module RailsBestPractices
47
47
  subject.stub(:output_terminal_errors)
48
48
  subject.stub(:output_html_errors)
49
49
  subject.stub(:output_yaml_errors)
50
+ subject.stub(:output_xml_errors)
50
51
 
51
52
  subject.output
52
53
  end
@@ -74,6 +75,15 @@ module RailsBestPractices
74
75
  expect(subject).to have_received(:output_html_errors)
75
76
  end
76
77
  end
78
+
79
+ context "when format is xml" do
80
+ let(:format) { "xml" }
81
+
82
+ it "runs xml output" do
83
+ expect(subject).to have_received(:output_xml_errors)
84
+ end
85
+ end
86
+
77
87
  end
78
88
 
79
89
  describe "output_terminal_errors" do
@@ -469,7 +469,7 @@ module RailsBestPractices
469
469
  expect(routes.size).to eq(0)
470
470
  end
471
471
 
472
- it "should add resource routes with get/post/put/delete routes" do
472
+ it "should add resource routes with get/post/put/patch/delete routes" do
473
473
  content =<<-EOF
474
474
  RailsBestPracticesCom::Application.routes.draw do
475
475
  resources :posts, only: [:show] do
@@ -481,14 +481,15 @@ module RailsBestPractices
481
481
  post :create, on: :member
482
482
  member do
483
483
  put :update
484
+ patch :update
484
485
  end
485
486
  end
486
487
  end
487
488
  EOF
488
489
  runner.prepare('config/routes.rb', content)
489
490
  routes = Prepares.routes
490
- expect(routes.size).to eq(6)
491
- expect(routes.map(&:to_s)).to eq(["PostsController#show", "PostsController#list", "PostsController#search", "PostsController#available", "PostsController#create", "PostsController#update"])
491
+ expect(routes.size).to eq(7)
492
+ expect(routes.map(&:to_s)).to eq(["PostsController#show", "PostsController#list", "PostsController#search", "PostsController#available", "PostsController#create", "PostsController#update", "PostsController#update"])
492
493
  end
493
494
 
494
495
  it "should add custom resources routes with {}" do
@@ -6,7 +6,7 @@ module RailsBestPractices
6
6
  let(:runner) { Core::Runner.new(reviews: UseScopeAccessReview.new) }
7
7
 
8
8
  context "if" do
9
- it "shoud use scope access" do
9
+ it "should use scope access" do
10
10
  content = <<-EOF
11
11
  class PostsController < ApplicationController
12
12
  def edit
@@ -24,7 +24,7 @@ module RailsBestPractices
24
24
  expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:5 - use scope access")
25
25
  end
26
26
 
27
- it "shoud use scope access with if in one line" do
27
+ it "should use scope access with if in one line" do
28
28
  content = <<-EOF
29
29
  class PostsController < ApplicationController
30
30
  def edit
@@ -39,7 +39,7 @@ module RailsBestPractices
39
39
  expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:5 - use scope access")
40
40
  end
41
41
 
42
- it "shoud use scope access with '? :'" do
42
+ it "should use scope access with '? :'" do
43
43
  content = <<-EOF
44
44
  class PostsController < ApplicationController
45
45
  def edit
@@ -54,7 +54,7 @@ module RailsBestPractices
54
54
  expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:5 - use scope access")
55
55
  end
56
56
 
57
- it "shoud use scope access by comparing with id" do
57
+ it "should use scope access by comparing with id" do
58
58
  content = <<-EOF
59
59
  class PostsController < ApplicationController
60
60
  def edit
@@ -72,7 +72,7 @@ module RailsBestPractices
72
72
  expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:5 - use scope access")
73
73
  end
74
74
 
75
- it "shoud use scope access with current_user ==" do
75
+ it "should use scope access with current_user ==" do
76
76
  content = <<-EOF
77
77
  class PostsController < ApplicationController
78
78
  def edit
@@ -90,7 +90,7 @@ module RailsBestPractices
90
90
  expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:5 - use scope access")
91
91
  end
92
92
 
93
- it "shoud use scope access by current_user.id ==" do
93
+ it "should use scope access by current_user.id ==" do
94
94
  content = <<-EOF
95
95
  class PostsController < ApplicationController
96
96
  def edit
@@ -110,7 +110,7 @@ module RailsBestPractices
110
110
  end
111
111
 
112
112
  context "unless" do
113
- it "shoud use scope access" do
113
+ it "should use scope access" do
114
114
  content = <<-EOF
115
115
  class PostsController < ApplicationController
116
116
  def edit
@@ -128,7 +128,7 @@ module RailsBestPractices
128
128
  expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:5 - use scope access")
129
129
  end
130
130
 
131
- it "shoud use scope access by comparing with id" do
131
+ it "should use scope access by comparing with id" do
132
132
  content = <<-EOF
133
133
  class PostsController < ApplicationController
134
134
  def edit
@@ -146,7 +146,7 @@ module RailsBestPractices
146
146
  expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:5 - use scope access")
147
147
  end
148
148
 
149
- it "shoud use scope access with current_user ==" do
149
+ it "should use scope access with current_user ==" do
150
150
  content = <<-EOF
151
151
  class PostsController < ApplicationController
152
152
  def edit
@@ -164,7 +164,7 @@ module RailsBestPractices
164
164
  expect(runner.errors[0].to_s).to eq("app/controllers/posts_controller.rb:5 - use scope access")
165
165
  end
166
166
 
167
- it "shoud use scope access by current_user.id ==" do
167
+ it "should use scope access by current_user.id ==" do
168
168
  content = <<-EOF
169
169
  class PostsController < ApplicationController
170
170
  def edit
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_best_practices
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.15.4
4
+ version: 1.15.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-12 00:00:00.000000000 Z
11
+ date: 2015-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: awesome_print
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: code_analyzer
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -206,6 +192,20 @@ dependencies:
206
192
  - - ">="
207
193
  - !ruby/object:Gem::Version
208
194
  version: '0'
195
+ - !ruby/object:Gem::Dependency
196
+ name: awesome_print
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ">="
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
209
  description: a code metric tool for rails codes, written in Ruby.
210
210
  email:
211
211
  - flyerhzm@gmail.com
@@ -413,7 +413,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
413
413
  version: 1.3.6
414
414
  requirements: []
415
415
  rubyforge_project:
416
- rubygems_version: 2.2.2
416
+ rubygems_version: 2.4.5
417
417
  signing_key:
418
418
  specification_version: 4
419
419
  summary: a code metric tool for rails codes.