rubocop-rails 2.33.1 → 2.33.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af326236e2f2697cca258f339f0f72d693b4b1f915acd4ba5c383c5d93c2b02c
4
- data.tar.gz: 9f125d09868d129709ed2bc8bbeeda73fd25c296f033e378558224ea7592f82b
3
+ metadata.gz: 1dd62ec2504a075e89e8933ab9a8ecc63061d04c75f604d661d21a87b264cdee
4
+ data.tar.gz: a47a5b0e0d1e2f94b4f5a2976875ce86eb19c2c9fed53a1767ce5c59666d819e
5
5
  SHA512:
6
- metadata.gz: 9f510dd2a447f4762d4b2364bb76e25dac66b1f166a4eae93fc0602ba379154b2d686cb04f1569d97220857a65c6cd6ff6b55cc97f3eb6d0c207b562d4d08e71
7
- data.tar.gz: 21334214037ac98c9256a0b198f5d556548e6a60900d02da1553ce46127f21760d7183e8e52ba2bb3b151755848f045c927f2157a0fb7d900e93fcbb82c88937
6
+ metadata.gz: 5c48f2805329e13493881423a0de8549a7e3d3cfacc99be40b5a9dbd36b4a6c3d376845c5b0bcf3b492023835e8b3f5062d291c8ebe87165d82f96a77dbbc102
7
+ data.tar.gz: b30b183e23a29af49d9a6709d27318d79d4ff24246ba1b21ac8ae14260acbb64fd46ec54661f3d18867ffb331f71d794a33e5b760545b0743645ce902cac1daf
@@ -13,18 +13,32 @@ module RuboCop
13
13
  # or the code may have a different purpose than memoization.
14
14
  #
15
15
  # @example
16
- # # bad
16
+ # # bad - exclusively doing memoization
17
17
  # def current_user
18
18
  # @current_user ||= User.find_by(id: session[:user_id])
19
19
  # end
20
20
  #
21
21
  # # good
22
22
  # def current_user
23
- # if instance_variable_defined?(:@current_user)
23
+ # return @current_user if defined?(@current_user)
24
+ #
25
+ # @current_user = User.find_by(id: session[:user_id])
26
+ # end
27
+ #
28
+ # # bad - method contains other code
29
+ # def current_user
30
+ # @current_user ||= User.find_by(id: session[:user_id])
31
+ # @current_user.do_something
32
+ # end
33
+ #
34
+ # # good
35
+ # def current_user
36
+ # if defined?(@current_user)
24
37
  # @current_user
25
38
  # else
26
39
  # @current_user = User.find_by(id: session[:user_id])
27
40
  # end
41
+ # @current_user.do_something
28
42
  # end
29
43
  class FindByOrAssignmentMemoization < Base
30
44
  extend AutoCorrector
@@ -40,6 +54,22 @@ module RuboCop
40
54
  )
41
55
  PATTERN
42
56
 
57
+ # When a method body contains only memoization, the correction can be more succinct.
58
+ def on_def(node)
59
+ find_by_or_assignment_memoization(node.body) do |varible_name, find_by|
60
+ add_offense(node.body) do |corrector|
61
+ corrector.replace(
62
+ node.body,
63
+ <<~RUBY.rstrip
64
+ return #{varible_name} if defined?(#{varible_name})
65
+
66
+ #{varible_name} = #{find_by.source}
67
+ RUBY
68
+ )
69
+ end
70
+ end
71
+ end
72
+
43
73
  def on_send(node)
44
74
  assignment_node = node.parent
45
75
  find_by_or_assignment_memoization(assignment_node) do |varible_name, find_by|
@@ -49,7 +79,7 @@ module RuboCop
49
79
  corrector.replace(
50
80
  assignment_node,
51
81
  <<~RUBY.rstrip
52
- if instance_variable_defined?(:#{varible_name})
82
+ if defined?(#{varible_name})
53
83
  #{varible_name}
54
84
  else
55
85
  #{varible_name} = #{find_by.source}
@@ -66,7 +66,7 @@ module RuboCop
66
66
  return false unless enclosing_method
67
67
 
68
68
  shadowing_method_name = first_arg.value.to_s
69
- shadowing_method_name << '=' if node.method?(:write_attribute)
69
+ shadowing_method_name += '=' if node.method?(:write_attribute)
70
70
  enclosing_method.method?(shadowing_method_name)
71
71
  end
72
72
 
@@ -4,7 +4,7 @@ module RuboCop
4
4
  module Rails
5
5
  # This module holds the RuboCop Rails version information.
6
6
  module Version
7
- STRING = '2.33.1'
7
+ STRING = '2.33.3'
8
8
 
9
9
  def self.document_version
10
10
  STRING.match('\d+\.\d+').to_s
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.33.1
4
+ version: 2.33.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov