rubocop-rails 2.29.1 → 2.30.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f6fa236fdf79709d4d0baec3c3ed01bc254e807dbd5ec39229374187b1d3d30c
4
- data.tar.gz: 99b29d27dd97c1adc12efb3d60a55370f6c4ad363bd6de51ca11ac33f3b1cd8a
3
+ metadata.gz: a51001f37d829dd1fe4436e613503b741fe0b0792ff30775ffe5fbe029b5748e
4
+ data.tar.gz: 326c2f809f1b73a5ce041a5035e0243362b9ab2228e929d9cac148c30de65bed
5
5
  SHA512:
6
- metadata.gz: 422221a038428edaf91477ef0ede6939023a686f3a62c14242efbfa1cb31be9d8f504eaf15ac103875696b5584b690cabcc86a4041b5c42cfd4480aa4ad27dbd
7
- data.tar.gz: 8240dcae47150b3137a980e731d69133df5e54364b62014d296b51715b1e3f47077b828d4f256191c79d8a14121e0d5cce9b06857f54b632e398216290e31f29
6
+ metadata.gz: e205cacccb63affdb2b270e4c0776eb3fc26e4114bc769adfa7d110803770616a916f501776c800357e8eb994ab126b7fe8d010ffd2118852c32f59af0e77b9e
7
+ data.tar.gz: b327dfd7f483ef356ddf0ab17102fa1bee86760a76f816f2e7f739b5ce087d012f023c11fdb16d5fb3177c499174111e1ed8e9cdf9b80c5a55e1e5d2cb151e0f
data/README.md CHANGED
@@ -31,13 +31,13 @@ ways to do this:
31
31
  Put this into your `.rubocop.yml`.
32
32
 
33
33
  ```yaml
34
- require: rubocop-rails
34
+ plugins: rubocop-rails
35
35
  ```
36
36
 
37
37
  Alternatively, use the following array notation when specifying multiple extensions.
38
38
 
39
39
  ```yaml
40
- require:
40
+ plugins:
41
41
  - rubocop-other-extension
42
42
  - rubocop-rails
43
43
  ```
@@ -45,21 +45,22 @@ require:
45
45
  Now you can run `rubocop` and it will automatically load the RuboCop Rails
46
46
  cops together with the standard cops.
47
47
 
48
+ > [!NOTE]
49
+ > The plugin system is supported in RuboCop 1.72+. In earlier versions, use `require` instead of `plugins`.
50
+
48
51
  ### Command line
49
52
 
50
53
  ```sh
51
- $ rubocop --require rubocop-rails
54
+ $ rubocop --plugin rubocop-rails
52
55
  ```
53
56
 
54
- Note: `--rails` option is required while `rubocop` command supports `--rails` option.
55
-
56
57
  ### Rake task
57
58
 
58
59
  ```ruby
59
60
  require 'rubocop/rake_task'
60
61
 
61
62
  RuboCop::RakeTask.new do |task|
62
- task.requires << 'rubocop-rails'
63
+ task.plugins << 'rubocop-rails'
63
64
  end
64
65
  ```
65
66
 
@@ -87,7 +87,7 @@ module RuboCop
87
87
 
88
88
  options.each_pair.find do |pair|
89
89
  next unless pair.key.sym_type? && pair.key.value == :foreign_key
90
- next unless pair.value.sym_type? || pair.value.str_type?
90
+ next unless pair.value.type?(:sym, :str)
91
91
 
92
92
  break pair.value.value.to_s
93
93
  end
@@ -6,6 +6,71 @@ module RuboCop
6
6
  module IndexMethod # rubocop:disable Metrics/ModuleLength
7
7
  RESTRICT_ON_SEND = %i[each_with_object to_h map collect []].freeze
8
8
 
9
+ # Internal helper class to hold match data
10
+ Captures = ::Struct.new(
11
+ :transformed_argname,
12
+ :transforming_body_expr
13
+ ) do
14
+ def noop_transformation?
15
+ transforming_body_expr.lvar_type? && transforming_body_expr.children == [transformed_argname]
16
+ end
17
+ end
18
+
19
+ # Internal helper class to hold autocorrect data
20
+ Autocorrection = ::Struct.new(:match, :block_node, :leading, :trailing) do
21
+ def self.from_each_with_object(node, match)
22
+ new(match, node, 0, 0)
23
+ end
24
+
25
+ def self.from_to_h(node, match)
26
+ new(match, node, 0, 0)
27
+ end
28
+
29
+ def self.from_map_to_h(node, match)
30
+ if node.block_literal?
31
+ strip_trailing_chars = 0
32
+ else
33
+ map_range = node.children.first.source_range
34
+ node_range = node.source_range
35
+ strip_trailing_chars = node_range.end_pos - map_range.end_pos
36
+ end
37
+
38
+ new(match, node.children.first, 0, strip_trailing_chars)
39
+ end
40
+
41
+ def self.from_hash_brackets_map(node, match)
42
+ new(match, node.children.last, "#{node.receiver.source}[".length, ']'.length)
43
+ end
44
+
45
+ def strip_prefix_and_suffix(node, corrector)
46
+ expression = node.source_range
47
+ corrector.remove_leading(expression, leading)
48
+ corrector.remove_trailing(expression, trailing)
49
+ end
50
+
51
+ def set_new_method_name(new_method_name, corrector)
52
+ range = block_node.send_node.loc.selector
53
+ if (send_end = block_node.send_node.loc.end)
54
+ # If there are arguments (only true in the `each_with_object` case)
55
+ range = range.begin.join(send_end)
56
+ end
57
+ corrector.replace(range, new_method_name)
58
+ end
59
+
60
+ def set_new_arg_name(transformed_argname, corrector)
61
+ return if block_node.numblock_type?
62
+
63
+ corrector.replace(block_node.arguments, "|#{transformed_argname}|")
64
+ end
65
+
66
+ def set_new_body_expression(transforming_body_expr, corrector)
67
+ body_source = transforming_body_expr.source
68
+ body_source = "{ #{body_source} }" if transforming_body_expr.hash_type? && !transforming_body_expr.braces?
69
+
70
+ corrector.replace(block_node.body, body_source)
71
+ end
72
+ end
73
+
9
74
  def on_block(node)
10
75
  on_bad_each_with_object(node) do |*match|
11
76
  handle_possible_offense(node, match, 'each_with_object')
@@ -102,71 +167,6 @@ module RuboCop
102
167
  correction.set_new_arg_name(captures.transformed_argname, corrector)
103
168
  correction.set_new_body_expression(captures.transforming_body_expr, corrector)
104
169
  end
105
-
106
- # Internal helper class to hold match data
107
- Captures = ::Struct.new(
108
- :transformed_argname,
109
- :transforming_body_expr
110
- ) do
111
- def noop_transformation?
112
- transforming_body_expr.lvar_type? && transforming_body_expr.children == [transformed_argname]
113
- end
114
- end
115
-
116
- # Internal helper class to hold autocorrect data
117
- Autocorrection = ::Struct.new(:match, :block_node, :leading, :trailing) do
118
- def self.from_each_with_object(node, match)
119
- new(match, node, 0, 0)
120
- end
121
-
122
- def self.from_to_h(node, match)
123
- new(match, node, 0, 0)
124
- end
125
-
126
- def self.from_map_to_h(node, match)
127
- if node.block_literal?
128
- strip_trailing_chars = 0
129
- else
130
- map_range = node.children.first.source_range
131
- node_range = node.source_range
132
- strip_trailing_chars = node_range.end_pos - map_range.end_pos
133
- end
134
-
135
- new(match, node.children.first, 0, strip_trailing_chars)
136
- end
137
-
138
- def self.from_hash_brackets_map(node, match)
139
- new(match, node.children.last, "#{node.receiver.source}[".length, ']'.length)
140
- end
141
-
142
- def strip_prefix_and_suffix(node, corrector)
143
- expression = node.source_range
144
- corrector.remove_leading(expression, leading)
145
- corrector.remove_trailing(expression, trailing)
146
- end
147
-
148
- def set_new_method_name(new_method_name, corrector)
149
- range = block_node.send_node.loc.selector
150
- if (send_end = block_node.send_node.loc.end)
151
- # If there are arguments (only true in the `each_with_object` case)
152
- range = range.begin.join(send_end)
153
- end
154
- corrector.replace(range, new_method_name)
155
- end
156
-
157
- def set_new_arg_name(transformed_argname, corrector)
158
- return if block_node.numblock_type?
159
-
160
- corrector.replace(block_node.arguments, "|#{transformed_argname}|")
161
- end
162
-
163
- def set_new_body_expression(transforming_body_expr, corrector)
164
- body_source = transforming_body_expr.source
165
- body_source = "{ #{body_source} }" if transforming_body_expr.hash_type? && !transforming_body_expr.braces?
166
-
167
- corrector.replace(block_node.body, body_source)
168
- end
169
- end
170
170
  end
171
171
  end
172
172
  end
@@ -66,7 +66,7 @@ module RuboCop
66
66
 
67
67
  def_node_matcher :match_belongs_to_with_options, <<~PATTERN
68
68
  (send _ :belongs_to ...
69
- (hash <$(pair (sym :required) ${true false}) ...>)
69
+ (hash <$(pair (sym :required) $boolean) ...>)
70
70
  )
71
71
  PATTERN
72
72
 
@@ -79,7 +79,7 @@ module RuboCop
79
79
  end
80
80
 
81
81
  def allowed_name?(argument)
82
- return false unless argument.str_type? || argument.sym_type?
82
+ return false unless argument.type?(:str, :sym)
83
83
 
84
84
  !/^[a-zA-Z-][a-zA-Z\-0-9]*$/.match?(argument.value)
85
85
  end
@@ -68,7 +68,7 @@ module RuboCop
68
68
 
69
69
  def_node_matcher :delegate?, <<~PATTERN
70
70
  (def _method_name _args
71
- (send {(send nil? _) (self)} _ ...))
71
+ (send {(send nil? _) (self) (send (self) :class) ({cvar gvar ivar} _) (const _ _)} _ ...))
72
72
  PATTERN
73
73
 
74
74
  def on_def(node)
@@ -82,15 +82,40 @@ module RuboCop
82
82
 
83
83
  def register_offense(node)
84
84
  add_offense(node.loc.keyword) do |corrector|
85
- body = node.body
85
+ receiver = determine_register_offense_receiver(node.body.receiver)
86
+ delegation = build_delegation(node, receiver)
86
87
 
87
- receiver = body.receiver.self_type? ? 'self' : ":#{body.receiver.method_name}"
88
+ corrector.replace(node, delegation)
89
+ end
90
+ end
91
+
92
+ def determine_register_offense_receiver(receiver)
93
+ case receiver.type
94
+ when :self
95
+ 'self'
96
+ when :const
97
+ full_name = full_const_name(receiver)
98
+ full_name.include?('::') ? ":'#{full_name}'" : ":#{full_name}"
99
+ when :cvar, :gvar, :ivar
100
+ ":#{receiver.source}"
101
+ else
102
+ ":#{receiver.method_name}"
103
+ end
104
+ end
88
105
 
89
- delegation = ["delegate :#{body.method_name}", "to: #{receiver}"]
90
- delegation << ['prefix: true'] if node.method?(prefixed_method_name(node.body))
106
+ def build_delegation(node, receiver)
107
+ delegation = ["delegate :#{node.body.method_name}", "to: #{receiver}"]
108
+ delegation << ['prefix: true'] if node.method?(prefixed_method_name(node.body))
109
+ delegation.join(', ')
110
+ end
91
111
 
92
- corrector.replace(node, delegation.join(', '))
112
+ def full_const_name(node)
113
+ return unless node.const_type?
114
+ unless node.namespace
115
+ return node.absolute? ? "::#{node.source}" : node.source
93
116
  end
117
+
118
+ "#{full_const_name(node.namespace)}::#{node.short_name}"
94
119
  end
95
120
 
96
121
  def trivial_delegate?(def_node)
@@ -120,7 +145,18 @@ module RuboCop
120
145
  def prefixed_method_name(body)
121
146
  return '' if body.receiver.self_type?
122
147
 
123
- [body.receiver.method_name, body.method_name].join('_').to_sym
148
+ [determine_prefixed_method_receiver_name(body.receiver), body.method_name].join('_').to_sym
149
+ end
150
+
151
+ def determine_prefixed_method_receiver_name(receiver)
152
+ case receiver.type
153
+ when :cvar, :gvar, :ivar
154
+ receiver.source
155
+ when :const
156
+ full_const_name(receiver)
157
+ else
158
+ receiver.method_name.to_s
159
+ end
124
160
  end
125
161
 
126
162
  def private_or_protected_delegation(node)
@@ -6,6 +6,9 @@ module RuboCop
6
6
  # Identifies usages of file path joining process to use `Rails.root.join` clause.
7
7
  # It is used to add uniformity when joining paths.
8
8
  #
9
+ # NOTE: This cop ignores leading slashes in string literal arguments for `Rails.root.join`
10
+ # and multiple slashes in string literal arguments for `Rails.root.join` and `File.join`.
11
+ #
9
12
  # @example EnforcedStyle: slashes (default)
10
13
  # # bad
11
14
  # Rails.root.join('app', 'models', 'goober')
@@ -97,7 +100,7 @@ module RuboCop
97
100
 
98
101
  def check_for_file_join_with_rails_root(node)
99
102
  return unless file_join_nodes?(node)
100
- return unless node.arguments.any? { |e| rails_root_nodes?(e) }
103
+ return unless valid_arguments_for_file_join_with_rails_root?(node.arguments)
101
104
 
102
105
  register_offense(node, require_to_s: true) do |corrector|
103
106
  autocorrect_file_join(corrector, node) unless node.first_argument.array_type?
@@ -108,8 +111,7 @@ module RuboCop
108
111
  return unless style == :slashes
109
112
  return unless rails_root_nodes?(node)
110
113
  return unless rails_root_join_nodes?(node)
111
- return unless node.arguments.size > 1
112
- return unless node.arguments.all?(&:str_type?)
114
+ return unless valid_string_arguments_for_rails_root_join?(node.arguments)
113
115
 
114
116
  register_offense(node, require_to_s: false) do |corrector|
115
117
  autocorrect_rails_root_join_with_string_arguments(corrector, node)
@@ -120,15 +122,42 @@ module RuboCop
120
122
  return unless style == :arguments
121
123
  return unless rails_root_nodes?(node)
122
124
  return unless rails_root_join_nodes?(node)
123
- return unless node.arguments.any? { |arg| string_with_slash?(arg) }
125
+ return unless valid_slash_separated_path_for_rails_root_join?(node.arguments)
124
126
 
125
127
  register_offense(node, require_to_s: false) do |corrector|
126
128
  autocorrect_rails_root_join_with_slash_separated_path(corrector, node)
127
129
  end
128
130
  end
129
131
 
130
- def string_with_slash?(node)
131
- node.str_type? && node.source.include?(File::SEPARATOR)
132
+ def valid_arguments_for_file_join_with_rails_root?(arguments)
133
+ return false unless arguments.any? { |arg| rails_root_nodes?(arg) }
134
+
135
+ arguments.none? { |arg| arg.variable? || arg.const_type? || string_contains_multiple_slashes?(arg) }
136
+ end
137
+
138
+ def valid_string_arguments_for_rails_root_join?(arguments)
139
+ return false unless arguments.size > 1
140
+ return false unless arguments.all?(&:str_type?)
141
+
142
+ arguments.none? { |arg| string_with_leading_slash?(arg) || string_contains_multiple_slashes?(arg) }
143
+ end
144
+
145
+ def valid_slash_separated_path_for_rails_root_join?(arguments)
146
+ return false unless arguments.any? { |arg| string_contains_slash?(arg) }
147
+
148
+ arguments.none? { |arg| string_with_leading_slash?(arg) || string_contains_multiple_slashes?(arg) }
149
+ end
150
+
151
+ def string_contains_slash?(node)
152
+ node.str_type? && node.value.include?(File::SEPARATOR)
153
+ end
154
+
155
+ def string_contains_multiple_slashes?(node)
156
+ node.str_type? && node.value.include?('//')
157
+ end
158
+
159
+ def string_with_leading_slash?(node)
160
+ node.str_type? && node.value.start_with?(File::SEPARATOR)
132
161
  end
133
162
 
134
163
  def register_offense(node, require_to_s:, &block)
@@ -226,7 +255,7 @@ module RuboCop
226
255
 
227
256
  def autocorrect_rails_root_join_with_slash_separated_path(corrector, node)
228
257
  node.arguments.each do |argument|
229
- next unless string_with_slash?(argument)
258
+ next unless string_contains_slash?(argument)
230
259
 
231
260
  index = argument.source.index(File::SEPARATOR)
232
261
  rest = inner_range_of(argument).adjust(begin_pos: index - 1)
@@ -29,7 +29,7 @@ module RuboCop
29
29
  def on_send(node)
30
30
  return unless node.arguments.empty?
31
31
  return unless (receiver = node.receiver)
32
- return if !receiver.str_type? && !receiver.array_type?
32
+ return unless receiver.type?(:str, :array)
33
33
 
34
34
  add_offense(node.loc.selector)
35
35
  end
@@ -56,7 +56,7 @@ module RuboCop
56
56
  minimum_target_rails_version 5.0
57
57
 
58
58
  def_node_matcher :pluck_candidate?, <<~PATTERN
59
- ({block numblock} (call _ {:map :collect}) $_argument (send lvar :[] $_key))
59
+ (any_block (call _ {:map :collect}) $_argument (send lvar :[] $_key))
60
60
  PATTERN
61
61
 
62
62
  def on_block(node)
@@ -96,7 +96,7 @@ module RuboCop
96
96
  end
97
97
 
98
98
  def literal_number?(node)
99
- node && (node.int_type? || node.float_type?)
99
+ node&.type?(:int, :float)
100
100
  end
101
101
 
102
102
  def pluralize(method_name)
@@ -102,7 +102,7 @@ module RuboCop
102
102
  end
103
103
 
104
104
  def ignore_other_node?(node)
105
- node && (node.if_type? || node.rescue_type? || node.while_type?)
105
+ node&.type?(:if, :rescue, :while)
106
106
  end
107
107
 
108
108
  def message(node, receiver, other)
@@ -248,7 +248,7 @@ module RuboCop
248
248
  end
249
249
 
250
250
  def conditional?(parent)
251
- parent.if_type? || parent.case_type?
251
+ parent.type?(:if, :case)
252
252
  end
253
253
 
254
254
  def deparenthesize(node)
@@ -305,7 +305,7 @@ module RuboCop
305
305
 
306
306
  node = assignable_node(node)
307
307
  method, sibling_index = find_method_with_sibling_index(node.parent)
308
- return false unless method && (method.def_type? || method.block_type?)
308
+ return false unless method&.type?(:def, :block)
309
309
 
310
310
  method.children.size == node.sibling_index + sibling_index
311
311
  end
@@ -324,7 +324,7 @@ module RuboCop
324
324
 
325
325
  def explicit_return?(node)
326
326
  ret = assignable_node(node).parent
327
- ret && (ret.return_type? || ret.next_type?)
327
+ ret&.type?(:return, :next)
328
328
  end
329
329
 
330
330
  def return_value_assigned?(node)
@@ -61,7 +61,7 @@ module RuboCop
61
61
  def_node_matcher :good_touch?, <<~PATTERN
62
62
  {
63
63
  (send (const {nil? cbase} :FileUtils) :touch ...)
64
- (send _ :touch {true false})
64
+ (send _ :touch boolean)
65
65
  }
66
66
  PATTERN
67
67
 
@@ -33,7 +33,7 @@ module RuboCop
33
33
 
34
34
  def on_send(node)
35
35
  return unless (receiver = node.receiver)
36
- return unless receiver.str_type? || receiver.dstr_type?
36
+ return unless receiver.type?(:str, :dstr)
37
37
  return unless receiver.respond_to?(:heredoc?) && receiver.heredoc?
38
38
 
39
39
  register_offense(node, receiver)
@@ -73,7 +73,7 @@ module RuboCop
73
73
 
74
74
  def column_names(node, uniqueness_part)
75
75
  arg = node.first_argument
76
- return unless arg.str_type? || arg.sym_type?
76
+ return unless arg.type?(:str, :sym)
77
77
 
78
78
  ret = [arg.value]
79
79
  names_from_scope = column_names_from_scope(uniqueness_part)
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'lint_roller'
4
+
5
+ module RuboCop
6
+ module Rails
7
+ # A plugin that integrates RuboCop Rails with RuboCop's plugin system.
8
+ class Plugin < LintRoller::Plugin
9
+ def about
10
+ LintRoller::About.new(
11
+ name: 'rubocop-rails',
12
+ version: Version::STRING,
13
+ homepage: 'https://github.com/rubocop/rubocop-rails',
14
+ description: 'A RuboCop extension focused on enforcing Rails best practices and coding conventions.'
15
+ )
16
+ end
17
+
18
+ def supported?(context)
19
+ context.engine == :rubocop
20
+ end
21
+
22
+ def rules(_context)
23
+ project_root = Pathname.new(__dir__).join('../../..')
24
+
25
+ ConfigObsoletion.files << project_root.join('config', 'obsoletion.yml')
26
+
27
+ LintRoller::Rules.new(type: :path, config_format: :rubocop, value: project_root.join('config', 'default.yml'))
28
+ end
29
+ end
30
+ end
31
+ end
@@ -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.29.1'
7
+ STRING = '2.30.0'
8
8
 
9
9
  def self.document_version
10
10
  STRING.match('\d+\.\d+').to_s
data/lib/rubocop/rails.rb CHANGED
@@ -1,13 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RuboCop
4
- # RuboCop Rails project namespace
4
+ # RuboCop Rails project namespace.
5
5
  module Rails
6
- PROJECT_ROOT = Pathname.new(__dir__).parent.parent.expand_path.freeze
7
- CONFIG_DEFAULT = PROJECT_ROOT.join('config', 'default.yml').freeze
8
-
9
- private_constant(:CONFIG_DEFAULT, :PROJECT_ROOT)
10
-
11
- ::RuboCop::ConfigObsoletion.files << PROJECT_ROOT.join('config', 'obsoletion.yml')
12
6
  end
13
7
  end
data/lib/rubocop-rails.rb CHANGED
@@ -7,12 +7,9 @@ require 'active_support/core_ext/object/blank'
7
7
 
8
8
  require_relative 'rubocop/rails'
9
9
  require_relative 'rubocop/rails/version'
10
- require_relative 'rubocop/rails/inject'
11
10
  require_relative 'rubocop/rails/schema_loader'
12
11
  require_relative 'rubocop/rails/schema_loader/schema'
13
-
14
- RuboCop::Rails::Inject.defaults!
15
-
12
+ require_relative 'rubocop/rails/plugin'
16
13
  require_relative 'rubocop/cop/rails_cops'
17
14
 
18
15
  require_relative 'rubocop/rails/migration_file_skippable'
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.29.1
4
+ version: 2.30.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bozhidar Batsov
@@ -9,7 +9,7 @@ authors:
9
9
  - Yuji Nakayama
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-01-25 00:00:00.000000000 Z
12
+ date: 2025-02-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -25,6 +25,20 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: 4.2.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: lint_roller
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '1.1'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '1.1'
28
42
  - !ruby/object:Gem::Dependency
29
43
  name: rack
30
44
  requirement: !ruby/object:Gem::Requirement
@@ -45,7 +59,7 @@ dependencies:
45
59
  requirements:
46
60
  - - ">="
47
61
  - !ruby/object:Gem::Version
48
- version: 1.52.0
62
+ version: 1.72.1
49
63
  - - "<"
50
64
  - !ruby/object:Gem::Version
51
65
  version: '2.0'
@@ -55,7 +69,7 @@ dependencies:
55
69
  requirements:
56
70
  - - ">="
57
71
  - !ruby/object:Gem::Version
58
- version: 1.52.0
72
+ version: 1.72.1
59
73
  - - "<"
60
74
  - !ruby/object:Gem::Version
61
75
  version: '2.0'
@@ -65,7 +79,7 @@ dependencies:
65
79
  requirements:
66
80
  - - ">="
67
81
  - !ruby/object:Gem::Version
68
- version: 1.31.1
82
+ version: 1.38.0
69
83
  - - "<"
70
84
  - !ruby/object:Gem::Version
71
85
  version: '2.0'
@@ -75,7 +89,7 @@ dependencies:
75
89
  requirements:
76
90
  - - ">="
77
91
  - !ruby/object:Gem::Version
78
- version: 1.31.1
92
+ version: 1.38.0
79
93
  - - "<"
80
94
  - !ruby/object:Gem::Version
81
95
  version: '2.0'
@@ -238,8 +252,8 @@ files:
238
252
  - lib/rubocop/cop/rails/where_range.rb
239
253
  - lib/rubocop/cop/rails_cops.rb
240
254
  - lib/rubocop/rails.rb
241
- - lib/rubocop/rails/inject.rb
242
255
  - lib/rubocop/rails/migration_file_skippable.rb
256
+ - lib/rubocop/rails/plugin.rb
243
257
  - lib/rubocop/rails/schema_loader.rb
244
258
  - lib/rubocop/rails/schema_loader/schema.rb
245
259
  - lib/rubocop/rails/version.rb
@@ -250,9 +264,10 @@ metadata:
250
264
  homepage_uri: https://docs.rubocop.org/rubocop-rails/
251
265
  changelog_uri: https://github.com/rubocop/rubocop-rails/blob/master/CHANGELOG.md
252
266
  source_code_uri: https://github.com/rubocop/rubocop-rails/
253
- documentation_uri: https://docs.rubocop.org/rubocop-rails/2.29/
267
+ documentation_uri: https://docs.rubocop.org/rubocop-rails/2.30/
254
268
  bug_tracker_uri: https://github.com/rubocop/rubocop-rails/issues
255
269
  rubygems_mfa_required: 'true'
270
+ default_lint_roller_plugin: RuboCop::Rails::Plugin
256
271
  rdoc_options: []
257
272
  require_paths:
258
273
  - lib
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RuboCop
4
- module Rails
5
- # Because RuboCop doesn't yet support plugins, we have to monkey patch in a
6
- # bit of our configuration.
7
- module Inject
8
- def self.defaults!
9
- path = CONFIG_DEFAULT.to_s
10
- hash = ConfigLoader.send(:load_yaml_configuration, path)
11
- config = Config.new(hash, path).tap(&:make_excludes_absolute)
12
- puts "configuration from #{path}" if ConfigLoader.debug?
13
- config = ConfigLoader.merge_with_default(config, path, unset_nil: false)
14
- ConfigLoader.instance_variable_set(:@default_configuration, config)
15
- end
16
- end
17
- end
18
- end