radius-spec 0.6.0 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
data/common_rubocop.yml CHANGED
@@ -1,5 +1,11 @@
1
1
  AllCops:
2
- TargetRubyVersion: 2.5.0
2
+ TargetRubyVersion: 2.7.0
3
+ # We choose to opt-in to new checks by default. This allows us to update
4
+ # version by version without having to worry about adding an entry for each
5
+ # new "enabled by default" check. If we want to jump multiple versions and
6
+ # wish to be notified of all the enw check, then we'll need to change
7
+ # `NewCops` to `pending`.
8
+ NewCops: enable
3
9
  Exclude:
4
10
  # Exclude generated binstubs
5
11
  - 'bin/bundle'
@@ -56,7 +62,7 @@ Layout/AccessModifierIndentation:
56
62
  # SupportedHashRocketStyles: key, separator, table
57
63
  # SupportedColonStyles: key, separator, table
58
64
  # SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit
59
- Layout/AlignHash:
65
+ Layout/HashAlignment:
60
66
  Enabled: true
61
67
  EnforcedHashRocketStyle: key
62
68
  EnforcedColonStyle: key
@@ -79,17 +85,46 @@ Layout/BlockAlignment:
79
85
  # Configuration parameters: EnforcedStyle, IndentationWidth.
80
86
  # SupportedStyles: consistent, consistent_relative_to_receiver,
81
87
  # special_for_inner_method_call, special_for_inner_method_call_in_parentheses
82
- Layout/FirstParameterIndentation:
88
+ #
89
+ # TODO: At some point this is split into both Layout/FirstArgumentIndentation
90
+ # and Layout/FirstParameterIndentation
91
+ Layout/FirstArgumentIndentation:
83
92
  Enabled: false
84
93
 
85
- # This project only uses newer Ruby versions which all support the "squiggly"
86
- # style. We prefer to use pure Ruby calls when possible instead of relying on
87
- # alternatives; even for Rails app.
94
+ # We generally prefer to use the default line length of 80. Though sometimes
95
+ # we just need a little extra space because it makes it easier to read.
88
96
  #
89
- # Configuration parameters: EnforcedStyle.
90
- # SupportedStyles: auto_detection, squiggly, active_support, powerpack, unindent
91
- Layout/IndentHeredoc:
92
- EnforcedStyle: squiggly
97
+ # The only way to disable Rubocop for a single line is either to wrap the line
98
+ # with two comments or append the disable comment to the end of the line. For
99
+ # guard clauses, we tend to prefer trailing comments to avoid adding two lines
100
+ # just to disable a cop on one line.
101
+ #
102
+ # Sometimes comments include ASCII diagrams, flow charts, etc. These cannot
103
+ # always be reformatted to fit within the 80 column limit. Also, we write most
104
+ # comments in markdown format. Rubocop isn't very good at understanding when
105
+ # the line is long because of a URL in a markdown link. Instead of requiring
106
+ # additional comments to turn this cop off for comments we ignore any long
107
+ # lines which are only comments.
108
+ #
109
+ # There are also cases where for one valid reason or another we have a trailing
110
+ # comment that extends a little too far. We'd like to be able to ignore those
111
+ # as well. This _attempts_ to do that, however, as this uses simple regular
112
+ # expressions we can only attempt to match so much. We probably should change
113
+ # this for a node pattern matcher in the future.
114
+ #
115
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes,
116
+ # IgnoreCopDirectives, IgnoredPatterns.
117
+ # URISchemes: http, https
118
+ Layout/LineLength:
119
+ IgnoreCopDirectives: true
120
+ IgnoredPatterns:
121
+ # Leading comments
122
+ - '\A\s*#'
123
+ # Attempt at trailing comments
124
+ - '\A.{1,78}\s#\s.*\z'
125
+ Max: 100
126
+ Exclude:
127
+ - '**/*.gemspec'
93
128
 
94
129
  # We tend to indent multi-line operation statements. I think this is because it
95
130
  # tends to be the default style auto-formatted by VIM (which many of us use).
@@ -124,6 +159,31 @@ Lint/AmbiguousBlockAssociation:
124
159
  Exclude:
125
160
  - 'spec/**/*_spec.rb'
126
161
 
162
+ # We prefer to enforce a consistent usage for readability
163
+ #
164
+ # <<~SQL.strip
165
+ # bar
166
+ # SQL
167
+ #
168
+ # display(<<~SQL.strip)
169
+ # bar
170
+ # SQL
171
+ #
172
+ # Alternatively, refactoring the heredoc into a local also improves
173
+ # readability:
174
+ #
175
+ # custom_sql = <<~SQL
176
+ # bar
177
+ # SQL
178
+ # display(custom_sql.strip)
179
+ Lint/HeredocMethodCallPosition:
180
+ Enabled: true
181
+
182
+ # We prefer people suggesting people subclass `StandardError` for their custom
183
+ # exceptions as this is a relatively common Ruby idiom.
184
+ Lint/InheritException:
185
+ EnforcedStyle: standard_error
186
+
127
187
  # Often with benchmarking we don't explicitly "use" a variable or return value.
128
188
  # We simply need to perform the operation which generates said value for the
129
189
  # benchmark.
@@ -133,9 +193,22 @@ Lint/Void:
133
193
  Exclude:
134
194
  - 'benchmarks/**/*'
135
195
 
196
+ Metrics/AbcSize:
197
+ # TODO: When we are able to upgrade to Rubocop 1.5.0 we want to enable the
198
+ # following `CountRepeatedAttributes` option. We often find the
199
+ # multi-references to the same object to be necessary for reability and that
200
+ # for our team it does not increase complexity.
201
+ #
202
+ # CountRepeatedAttributes: false
203
+ Max: 17
204
+
136
205
  # Configuration parameters: CountComments, ExcludedMethods, Max.
137
206
  # ExcludedMethods: refine
138
207
  Metrics/BlockLength:
208
+ CountAsOne:
209
+ - 'array'
210
+ - 'hash'
211
+ - 'heredoc'
139
212
  Exclude:
140
213
  - '**/Rakefile'
141
214
  - '**/*.rake'
@@ -144,46 +217,36 @@ Metrics/BlockLength:
144
217
  - 'spec/support/model_factories.rb'
145
218
  ExcludedMethods:
146
219
  - 'chdir'
220
+ - 'describe'
147
221
  - 'refine'
222
+ - 'shared_context'
223
+ - 'shared_examples'
148
224
  - 'Capybara.register_driver'
149
- - 'Gem::Specification.new'
150
225
  - 'RSpec.configure'
226
+ - 'RSpec.describe'
227
+ - 'RSpec.shared_context'
228
+ - 'RSpec.shared_examples'
151
229
  - 'VCR.configure'
152
230
 
153
- # We generally prefer to use the default line length of 80. Though sometimes
154
- # we just need a little extra space because it makes it easier to read.
155
- #
156
- # The only way to disable Rubocop for a single line is either to wrap the line
157
- # with two comments or append the disable comment to the end of the line. For
158
- # guard clauses, we tend to prefer trailing comments to avoid adding two lines
159
- # just to disable a cop on one line.
160
- #
161
- # Sometimes comments include ASCII diagrams, flow charts, etc. These cannot
162
- # always be reformatted to fit within the 80 column limit. Also, we write most
163
- # comments in markdown format. Rubocop isn't very good at understanding when
164
- # the line is long because of a URL in a markdown link. Instead of requiring
165
- # additional comments to turn this cop off for comments we ignore any long
166
- # lines which are only comments.
167
- #
168
- # There are also cases where for one valid reason or another we have a trailing
169
- # comment that extends a little too far. We'd like to be able to ignore those
170
- # as well. This _attempts_ to do that, however, as this uses simple regular
171
- # expressions we can only attempt to match so much. We probably should change
172
- # this for a node pattern matcher in the future.
173
- #
174
- # Configuration parameters: AllowHeredoc, AllowURI, URISchemes,
175
- # IgnoreCopDirectives, IgnoredPatterns.
176
- # URISchemes: http, https
177
- Metrics/LineLength:
178
- IgnoreCopDirectives: true
179
- IgnoredPatterns:
180
- # Leading comments
181
- - '\A\s*#'
182
- # Attempt at trailing comments
183
- - '\A.{1,78}\s#\s.*\z'
184
- Max: 100
185
- Exclude:
186
- - '**/*.gemspec'
231
+ # We want length related code metrics to count Hashs, Arrays, and
232
+ # Heredocs as one "line"
233
+ Metrics/ClassLength:
234
+ CountAsOne:
235
+ - 'array'
236
+ - 'hash'
237
+ - 'heredoc'
238
+
239
+ Metrics/ModuleLength:
240
+ CountAsOne:
241
+ - 'array'
242
+ - 'hash'
243
+ - 'heredoc'
244
+
245
+ Metrics/MethodLength:
246
+ CountAsOne:
247
+ - 'array'
248
+ - 'hash'
249
+ - 'heredoc'
187
250
 
188
251
  # This is overly pedantic (only allowing `other` as the parameter name). Ruby
189
252
  # core doesn't follow this consistently either. Looking at several classes
@@ -206,14 +269,14 @@ Naming/FileName:
206
269
  # `EOF` is a common terminal abbreviate indicating end-of-file. We allow this
207
270
  # for those heredocs which represent "file" text.
208
271
  #
209
- # Configuration parameters: Blacklist.
210
- # Blacklist: (?-mix:(^|\s)(EO[A-Z]{1}|END)(\s|$))
272
+ # Configuration parameters: ForbiddenDelimiters.
273
+ # ForbiddenDelimiters: (?-mix:(^|\s)(EO[A-Z]{1}|END)(\s|$))
211
274
  Naming/HeredocDelimiterNaming:
212
275
  Details: |
213
276
 
214
277
  Use meaningful delimiter names to provide context to the text. The only
215
278
  allowed `EO*` variant if `EOF` which has specific meaning for file content.
216
- Blacklist:
279
+ ForbiddenDelimiters:
217
280
  - !ruby/regexp '/(^|\s)(EO[A-EG-Z]{1}|END)(\s|$)/'
218
281
 
219
282
  # It is generally a good idea to match the instance variable names with their
@@ -235,6 +298,13 @@ Naming/MemoizedInstanceVariableName:
235
298
  acceptable.
236
299
  EnforcedStyleForLeadingUnderscores: optional
237
300
 
301
+ # We don't really care about this check. Sometimes using something simple such
302
+ # as `err` is just fine. Other times it may improve readability to have a more
303
+ # descriptive name. We feel this is a personal judgement call and not something
304
+ # that needs to be enforced.
305
+ Naming/RescuedExceptionsVariableName:
306
+ Enabled: false
307
+
238
308
  # `alias` behavior changes on scope. In general we expect the behavior to be
239
309
  # that which is defined by `alias_method`.
240
310
  #
@@ -284,7 +354,10 @@ Style/AsciiComments:
284
354
  # - Prefer `{...}` over `do...end` for functional blocks.
285
355
  #
286
356
  # When the return value of the method receiving the block is important prefer
287
- # `{..}` over `do..end`.
357
+ # `{...}` over `do...end`.
358
+ #
359
+ # Some people enjoy the compact readability of `{...}` for one-liners so we
360
+ # allow that style as well.
288
361
  #
289
362
  # Configuration parameters: EnforcedStyle, ProceduralMethods, FunctionalMethods, IgnoredMethods.
290
363
  # SupportedStyles: line_count_based, semantic, braces_for_chaining
@@ -297,6 +370,7 @@ Style/BlockDelimiters:
297
370
 
298
371
  When the return value of the method receiving the block is important prefer
299
372
  `{..}` over `do..end`.
373
+ AllowBracesOnProceduralOneLiners: true
300
374
  Enabled: true
301
375
  EnforcedStyle: semantic
302
376
  ProceduralMethods:
@@ -327,6 +401,15 @@ Style/BlockDelimiters:
327
401
  - proc
328
402
  - it
329
403
 
404
+ # As a team we prefer the more explicit `def self.method_name` style. We find
405
+ # the explicitness easier to read and grep for on the CLI.
406
+ #
407
+ # Configuration parameters: EnforcedStyle.
408
+ # SupportedStyles: def_self, self_class
409
+ Style/ClassMethodsDefinitions:
410
+ Enabled: true
411
+ EnforcedStyle: def_self
412
+
330
413
  # Prefer `Time` over `DateTime`.
331
414
  #
332
415
  # While these are not necessarily interchangeable we prefer `Time`. According
@@ -401,6 +484,13 @@ Style/EmptyCaseCondition:
401
484
  Style/EmptyMethod:
402
485
  EnforcedStyle: expanded
403
486
 
487
+ # Always require the pragma comment to be true
488
+ #
489
+ # Configuration parameters: EnforcedStyle.
490
+ # SupportedStyles: always, always_true, never
491
+ Style/FrozenStringLiteralComment:
492
+ EnforcedStyle: always_true
493
+
404
494
  # Prefer symbol keys using the 1.9 hash syntax. However, when keys are mixed
405
495
  # use a consistent mapping style; which generally means using hash rockets:
406
496
  #
@@ -574,6 +664,11 @@ Style/RescueStandardError:
574
664
  Avoid rescuing `Exception` as this may hide system errors.
575
665
  EnforcedStyle: implicit
576
666
 
667
+ # We don't really care which style we use here and would prefer rubocop not
668
+ # complain about this.
669
+ Style/SlicingWithRange:
670
+ Enabled: false
671
+
577
672
  # We generally prefer double quotes but many generators use single quotes. We
578
673
  # don't view the performance difference to be all that much so we don't care
579
674
  # if the style is mixed or double quotes are used for static strings.
@@ -1,3 +1,5 @@
1
+ require: rubocop-rails
2
+
1
3
  inherit_mode:
2
4
  merge:
3
5
  - Exclude
@@ -5,10 +7,6 @@ inherit_mode:
5
7
 
6
8
  inherit_from: common_rubocop.yml
7
9
 
8
- # Enable additional Rails cops
9
- Rails:
10
- Enabled: true
11
-
12
10
  AllCops:
13
11
  Exclude:
14
12
  - 'bin/puma'
@@ -22,26 +20,26 @@ AllCops:
22
20
  - 'db/migrate/**/*'
23
21
 
24
22
  # Rails project's are not concerned with API docs normally
25
- Documentation:
23
+ Style/Documentation:
26
24
  Enabled: false
27
25
 
28
- Metrics/BlockLength:
29
- Exclude:
30
- - 'bin/setup'
31
- - 'bin/update'
32
- - 'config/routes.rb'
33
- - 'spec/rails_helper.rb'
34
-
35
26
  # Rails foreign keys and indexes can get long. We want to ignore our annotation
36
27
  # comments which are for these entries.
37
28
  #
38
29
  # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
39
30
  # URISchemes: http, https
40
- Metrics/LineLength:
31
+ Layout/LineLength:
41
32
  IgnoredPatterns:
42
33
  - '\A# fk_rails_'
43
34
  - '\A# index_'
44
35
 
36
+ Metrics/BlockLength:
37
+ Exclude:
38
+ - 'bin/setup'
39
+ - 'bin/update'
40
+ - 'config/routes.rb'
41
+ - 'spec/rails_helper.rb'
42
+
45
43
  # For our Rails apps several of them use the `respond_to` with `format` blocks
46
44
  # to handle various mime types (mostly HTML and JSON). Given our `do` / `end`
47
45
  # block style for non-functional blocks (which includes both `respond_to` and
@@ -108,6 +106,11 @@ Rails/ApplicationRecord:
108
106
  Rails/CreateTableWithTimestamps:
109
107
  Enabled: false
110
108
 
109
+ # This cop looks for uses of default_scope because named scopes are preferred:
110
+ # https://rails.rubystyle.guide/#named-scopes
111
+ Rails/DefaultScope:
112
+ Enabled: true
113
+
111
114
  # Usage of `find_by` is more expressive of intent than `where.first`. We should
112
115
  # check all app code, not just the models to improve intent expression.
113
116
  #
@@ -121,6 +124,11 @@ Rails/FindBy:
121
124
  - 'app/**/*.rb'
122
125
  - 'lib/**/*.rb'
123
126
 
127
+ # This cop enforces that ActiveRecord#find is used instead of where.take!, find_by!, and find_by_id!
128
+ # to retrieve a single record by primary key when you expect it to be found.
129
+ Rails/FindById:
130
+ Enabled: true
131
+
124
132
  # Usage of `each` for large datasets can be a performance issue; specially a
125
133
  # drain on system memory. When possible it's better to use `find_each` so that
126
134
  # chunks of data are evaluated at a time.
@@ -145,6 +153,52 @@ Rails/FindEach:
145
153
  Rails/HasAndBelongsToMany:
146
154
  Enabled: false
147
155
 
156
+ # We find the combo `:only` and `:if` readable. While the `:except` and `:if`
157
+ # combo is easier to read as a combined proc. As a team we are fine with
158
+ # handling this in PR reviews, until such time which Rubocop provides an option
159
+ # for us to configure this.
160
+ Rails/IgnoredSkipActionFilterOption:
161
+ Enabled: false
162
+
163
+ # We do not care about this check due to its lack of configuration.
164
+ #
165
+ # Some of the team finds the naming of this method is more confusing than using
166
+ # `each_with_object`. We all agree the other examples are bad and should not be
167
+ # used:
168
+ #
169
+ # # OK for us
170
+ # [1, 2, 3].each_with_object({}) { |el, h| h[foo(el)] = el }
171
+ #
172
+ # # Bad
173
+ # [1, 2, 3].to_h { |el| [foo(el), el] }
174
+ # [1, 2, 3].map { |el| [foo(el), el] }.to_h
175
+ # Hash[[1, 2, 3].collect { |el| [foo(el), el] }]
176
+ #
177
+ # If this check supports configuration in the future so that we can allow
178
+ # `each_with_object` then we'll turn it back on.
179
+ Rails/IndexBy:
180
+ Enabled: false
181
+
182
+ # We find the name of this method to be very confusing. We'd prefer this method
183
+ # is never used.
184
+ Rails/IndexWith:
185
+ Enabled: false
186
+
187
+ # This cop enforces the use of ids over pluck(:id) and pluck(primary_key).
188
+ # https://rails.rubystyle.guide/#ids
189
+ Rails/PluckId:
190
+ Enabled: true
191
+
192
+ # This cop identifies places where pluck is used in where query methods and can be replaced with
193
+ # select. Since pluck is an eager method and hits the database immediately, using select helps to
194
+ # avoid additional database queries.
195
+ #
196
+ # When the EnforcedStyle is aggressive then all calls to pluck in the where is used as offenses.
197
+ # This may lead to false positives as the cop cannot replace to select between calls to pluck on an
198
+ # ActiveRecord::Relation instance vs a call to pluck on an Array instance.
199
+ Rails/PluckInWhere:
200
+ EnforcedStyle: aggressive
201
+
148
202
  # The ActiveSupport monkey patches for `present?` are nearly all defined as:
149
203
  #
150
204
  # !blank?
@@ -205,6 +259,13 @@ Rails/ReadWriteAttribute:
205
259
  Rails/SaveBang:
206
260
  Enabled: true
207
261
 
262
+ # This cop enforces that short forms of I18n methods are used: t instead of translate and l instead
263
+ # of localize. We want this because it's a pain to use the full method names over and over in view
264
+ # code. When the EnforcedStyle is aggressive then all translate and localize calls without a
265
+ # receiver are added as offenses.
266
+ Rails/ShortI18n:
267
+ EnforcedStyle: aggressive
268
+
208
269
  # According to the Rails docs while the following methods skip validations they
209
270
  # only update the specified (single) attribute reducing risks. We'd rather not
210
271
  # warn for those cases:
@@ -222,14 +283,19 @@ Rails/SaveBang:
222
283
  # - http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html
223
284
  # - http://api.rubyonrails.org/classes/ActiveRecord/Relation.html
224
285
  #
225
- # Configuration parameters: Blacklist, Whitelist.
226
- # Blacklist: decrement!, decrement_counter, increment!, increment_counter, toggle!, touch, update_all, update_attribute, update_column, update_columns, update_counters
286
+ # Configuration parameters: ForbiddenMethods, AllowedMethods.
287
+ # ForbiddenMethods: decrement!, decrement_counter, increment!, increment_counter, toggle!, touch, update_all, update_attribute, update_column, update_columns, update_counters
227
288
  Rails/SkipsModelValidations:
228
- Whitelist:
289
+ AllowedMethods:
229
290
  - 'decrement!'
230
291
  - 'increment!'
231
292
  - 'touch'
232
293
 
294
+ # We don't want to be forced to use squish in SQL or JSON heredocs (especially
295
+ # in specs).
296
+ Rails/SquishedSQLHeredocs:
297
+ Enabled: false
298
+
233
299
  # Rails uses compact style by default so we're disabling this with a :hammer:
234
300
  # for things likely to be generated by Rails (i.e. most things in app).
235
301
  #
@@ -110,6 +110,14 @@ module Radius
110
110
  class TemplateNotFound < KeyError; end
111
111
 
112
112
  class << self
113
+ # rubocop:disable Style/ClassMethodsDefinitions
114
+ # Style Note: We are using this class method style because we need to
115
+ # call `alias_method` within this module's singleton class context.
116
+ # Ruby did not introduce access to `singleton_class` until 2.7. Once we
117
+ # drop support for Ruby < 2.7 we can switch styles and use:
118
+ #
119
+ # singleton_class.alias_method :factory, :define_factory
120
+
113
121
  # Suggested method for defining multiple factory templates at once.
114
122
  #
115
123
  # Most projects end up having many domain models which need factories
@@ -283,6 +291,7 @@ module Radius
283
291
  def templates
284
292
  @templates ||= {}
285
293
  end
294
+ # rubocop:enable Style/ClassMethodsDefinitions
286
295
  end
287
296
 
288
297
  module_function
@@ -482,10 +491,8 @@ module Radius
482
491
  end
483
492
 
484
493
  # Try to load the factories defined for the specs
485
- # rubocop:disable Lint/HandleExceptions
486
494
  begin
487
495
  require 'support/model_factories'
488
496
  rescue LoadError
489
497
  # Ignore as this is an optional convenience feature
490
498
  end
491
- # rubocop:enable Lint/HandleExceptions
@@ -22,6 +22,10 @@ RSpec.configure do |config|
22
22
  # ...rather than:
23
23
  # # => "be bigger than 2"
24
24
  expectations.include_chain_clauses_in_custom_matcher_descriptions = true
25
+
26
+ # The default is to warn, but this normally just gets ignored by
27
+ # developers. It's best to fix the problem then live with the warning.
28
+ expectations.on_potential_false_positives = :raise
25
29
  end
26
30
 
27
31
  # rspec-mocks config goes here. You can use an alternate test double
@@ -101,6 +105,11 @@ RSpec.configure do |config|
101
105
  # as the one that triggered the failure.
102
106
  Kernel.srand config.seed
103
107
 
108
+ # Common shared_example / shared_context inclusion alias for behavior driven
109
+ # development
110
+ config.alias_it_should_behave_like_to :has_behavior
111
+ config.alias_it_should_behave_like_to :it_has_behavior, 'has behavior:'
112
+
104
113
  config.when_first_matching_example_defined(
105
114
  :model_factory,
106
115
  :model_factories,
@@ -91,10 +91,8 @@ RSpec.configure do |config|
91
91
  end
92
92
 
93
93
  # Try to any custom VCR config for the app
94
- # rubocop:disable Lint/HandleExceptions
95
94
  begin
96
95
  require 'support/vcr'
97
96
  rescue LoadError
98
97
  # Ignore as this is an optional convenience feature
99
98
  end
100
- # rubocop:enable Lint/HandleExceptions
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Radius
4
4
  module Spec
5
- VERSION = "0.6.0"
5
+ VERSION = "0.10.0"
6
6
  end
7
7
  end
data/radius-spec.gemspec CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
 
13
13
  spec.metadata = {
14
14
  "bug_tracker_uri" => "https://github.com/RadiusNetworks/radius-spec/issues",
15
- "changelog_uri" => "https://github.com/RadiusNetworks/radius-spec/blob/v#{Radius::Spec::VERSION}/CHANGELOG.md",
15
+ "changelog_uri" => "https://github.com/RadiusNetworks/radius-spec/blob/v#{Radius::Spec::VERSION}/CHANGELOG.md",
16
16
  "source_code_uri" => "https://github.com/RadiusNetworks/radius-spec/tree/v#{Radius::Spec::VERSION}",
17
17
  }
18
18
  spec.summary = "Radius Networks RSpec setup and plug-ins"
@@ -21,18 +21,19 @@ Gem::Specification.new do |spec|
21
21
  spec.homepage = "https://github.com/RadiusNetworks/radius-spec"
22
22
  spec.license = "Apache-2.0"
23
23
 
24
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
24
+ spec.files = `git ls-files -z`.split("\x0").reject { |f|
25
25
  f.match(%r{^(test|spec|features)/})
26
- end
26
+ }
27
27
  spec.bindir = "exe"
28
28
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
29
29
  spec.require_paths = ["lib"]
30
30
 
31
- spec.required_ruby_version = ">= 2.5"
31
+ spec.required_ruby_version = ">= 2.5" # rubocop:disable Gemspec/RequiredRubyVersion
32
32
 
33
33
  spec.add_runtime_dependency "rspec", "~> 3.7"
34
- spec.add_runtime_dependency "rubocop", "~> 0.62.0"
34
+ spec.add_runtime_dependency "rubocop", "~> 0.90.0"
35
+ spec.add_runtime_dependency "rubocop-rails", "~> 2.9.1"
35
36
 
36
- spec.add_development_dependency "bundler", "~> 1.16"
37
- spec.add_development_dependency "rake", "~> 12.0"
37
+ spec.add_development_dependency "bundler", ">= 2.2.10"
38
+ spec.add_development_dependency "rake", ">= 12.0", "< 14.0"
38
39
  end