rubocop-ruby2_2 1.0.4 → 2.0.1

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.
data/README.md CHANGED
@@ -16,18 +16,106 @@
16
16
  </a>
17
17
  </p>
18
18
 
19
- # Rubocop::Ruby22
19
+ ---
20
+
21
+ NOTE: You might be interested in [`rubocop-lts`][rlts] which sits as a higher level than this gem, and can keep pace with whatever version of Ruby you happen to be on.
22
+
23
+ | Gem Name | Version | Downloads | CI | Activity |
24
+ |-------------------------------|-------------------------------------|----------------------------------------------------------------------|-----------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|
25
+ | [`rubocop-lts`][⛳️lts-gh] | [![Gem Version][⛳️lts-vi]][⛳️lts-g] | [![Total DL][🖇️lts-dti]][⛳️lts-g] [![DL Rank][🏘️lts-rti]][⛳️lts-g] | [![Current][🚎lts-cwfi]][🚎lts-cwf] | [![Open Issues][📗lts-ioi]][📗lts-io] [![Closed Issues][🚀lts-ici]][🚀lts-ic] [![Open PRs][💄lts-poi]][💄lts-po] [![Closed PRs][👽lts-pci]][👽lts-pc] |
26
+ | [`rubocop-ruby2_2`][⛳️ini-gh] | [![Gem Version][⛳️ini-vi]][⛳️ini-g] | [![Total DL][🖇️ini-dti]][⛳️ini-g] [![DL Rank][🏘️ini-rti]][⛳️ini-g] | [![Current][🚎ini-cwfi]][🚎ini-cwf] [![Heads][🖐ini-hwfi]][🖐ini-hwf] | [![Open Issues][📗ini-ioi]][📗ini-io] [![Closed Issues][🚀ini-ici]][🚀ini-ic] [![Open PRs][💄ini-poi]][💄ini-po] [![Closed PRs][👽ini-pci]][👽ini-pc] |
27
+
28
+ <!-- columnar badge #s for Project Health table:
29
+ ⛳️
30
+ 🖇
31
+ 🏘
32
+ 🚎
33
+ 🖐
34
+ 🧮
35
+ 📗
36
+ 🚀
37
+ 💄
38
+ 👽
39
+ -->
40
+
41
+ [⛳️lts-vi]: http://img.shields.io/gem/v/rubocop-lts.svg
42
+ [🖇️lts-dti]: https://img.shields.io/gem/dt/rubocop-lts.svg
43
+ [🏘️lts-rti]: https://img.shields.io/gem/rt/rubocop-lts.svg
44
+ [🚎lts-cwf]: https://github.com/rubocop-lts/rubocop-lts/actions/workflows/current.yml
45
+ [🚎lts-cwfi]: https://github.com/rubocop-lts/rubocop-lts/actions/workflows/current.yml/badge.svg
46
+ [🖐lts-hwf]: https://github.com/rubocop-lts/rubocop-lts/actions/workflows/heads.yml
47
+ [🖐lts-hwfi]: https://github.com/rubocop-lts/rubocop-lts/actions/workflows/heads.yml/badge.svg
48
+ [🧮lts-lwf]: https://github.com/rubocop-lts/rubocop-lts/actions/workflows/legacy.yml
49
+ [🧮lts-lwfi]: https://github.com/rubocop-lts/rubocop-lts/actions/workflows/legacy.yml/badge.svg
50
+ [📗lts-io]: https://github.com/rubocop-lts/rubocop-lts/issues
51
+ [📗lts-ioi]: https://img.shields.io/github/issues-raw/rubocop-lts/rubocop-lts
52
+ [🚀lts-ic]: https://github.com/rubocop-lts/rubocop-lts/issues?q=is%3Aissue+is%3Aclosed
53
+ [🚀lts-ici]: https://img.shields.io/github/issues-closed-raw/rubocop-lts/rubocop-lts
54
+ [💄lts-po]: https://github.com/rubocop-lts/rubocop-lts/pulls
55
+ [💄lts-poi]: https://img.shields.io/github/issues-pr/rubocop-lts/rubocop-lts
56
+ [👽lts-pc]: https://github.com/rubocop-lts/rubocop-lts/pulls?q=is%3Apr+is%3Aclosed
57
+ [👽lts-pci]: https://img.shields.io/github/issues-pr-closed/rubocop-lts/rubocop-lts
58
+ [⛳️lts-g]: https://rubygems.org/gems/rubocop-lts
59
+ [⛳️lts-gh]: https://github.com/rubocop-lts/rubocop-lts
60
+
61
+ [⛳️ini-vi]: http://img.shields.io/gem/v/rubocop-ruby2_2.svg
62
+ [🖇️ini-dti]: https://img.shields.io/gem/dt/rubocop-ruby2_2.svg
63
+ [🏘️ini-rti]: https://img.shields.io/gem/rt/rubocop-ruby2_2.svg
64
+ [🚎ini-cwf]: https://github.com/rubocop-lts/rubocop-ruby2_2/actions/workflows/current.yml
65
+ [🚎ini-cwfi]: https://github.com/rubocop-lts/rubocop-ruby2_2/actions/workflows/current.yml/badge.svg
66
+ [🖐ini-hwf]: https://github.com/rubocop-lts/rubocop-ruby2_2/actions/workflows/heads.yml
67
+ [🖐ini-hwfi]: https://github.com/rubocop-lts/rubocop-ruby2_2/actions/workflows/heads.yml/badge.svg
68
+ [🧮ini-lwf]: https://github.com/rubocop-lts/rubocop-ruby2_2/actions/workflows/legacy.yml
69
+ [🧮ini-lwfi]: https://github.com/rubocop-lts/rubocop-ruby2_2/actions/workflows/legacy.yml/badge.svg
70
+ [📗ini-io]: https://github.com/rubocop-lts/rubocop-ruby2_2/issues
71
+ [📗ini-ioi]: https://img.shields.io/github/issues-raw/rubocop-lts/rubocop-ruby2_2
72
+ [🚀ini-ic]: https://github.com/rubocop-lts/rubocop-ruby2_2/issues?q=is%3Aissue+is%3Aclosed
73
+ [🚀ini-ici]: https://img.shields.io/github/issues-closed-raw/rubocop-lts/rubocop-ruby2_2
74
+ [💄ini-po]: https://github.com/rubocop-lts/rubocop-ruby2_2/pulls
75
+ [💄ini-poi]: https://img.shields.io/github/issues-pr/rubocop-lts/rubocop-ruby2_2
76
+ [👽ini-pc]: https://github.com/rubocop-lts/rubocop-ruby2_2/pulls?q=is%3Apr+is%3Aclosed
77
+ [👽ini-pci]: https://img.shields.io/github/issues-pr-closed/rubocop-lts/rubocop-ruby2_2
78
+ [⛳️ini-g]: https://rubygems.org/gems/rubocop-ruby2_2
79
+ [⛳️ini-gh]: https://github.com/rubocop-lts/rubocop-ruby2_2
80
+
81
+ # 🦾 Rubocop::Ruby22
20
82
 
21
83
  See the intro [blog post](https://dev.to/pboling/rubocop-ruby-matrix-gems-nj)!
22
84
 
23
- This gem requires no other gems. It depends on `rubocop`, but does not `require 'rubocop'`.
85
+ This gem configures many gems for you:
86
+
87
+ - rubocop
88
+ - rubocop-gradual
89
+ - rubocop-md
90
+ - rubocop-rake
91
+ - rubocop-shopify
92
+ - rubocop-thread_safety
93
+ - standard
94
+ - standard-performance (incl. rubocop-performance)
95
+ - standard-custom
96
+ - standard-rubocop-lts (ruby version-specific rules)
97
+
98
+ And optionally, if you are using RSpec:
99
+
100
+ - rubocop-rspec
101
+
102
+ And optionally, if you are building a RubyGem:
103
+
104
+ - rubocop-packaging
105
+
106
+ And optionally, if you are building a Rails app:
107
+
108
+ - standard-rails (incl. rubocop-rails)
109
+ - betterlint
24
110
 
25
111
  Awareness of `rubocop`'s lack of [SemVer][semver] adherence isn't evenly dispersed in the Ruby community.
26
112
 
27
- The Rubocop team [has real reasons](https://github.com/semver/semver/issues/317)
28
- for [not following SemVer](https://github.com/rubocop/rubocop/issues/4243), but if you've
29
- found this project their reasons likely weigh less, in your context (e.g. running `rubocop` from command line), than
30
- what brought you here.
113
+ The RuboCop team [has reasons](https://github.com/semver/semver/issues/317)
114
+ for [not following SemVer](https://github.com/rubocop/rubocop/issues/4243).
115
+
116
+ NOTE: They think they are following SemVer,
117
+ but their interpretation differs from mine, and seems to differ from the
118
+ [intent of SemVer's creator][major-versions-not-sacred].
31
119
 
32
120
  <p align="left">
33
121
  <a href="https://metaredux.com/posts/2022/04/21/rubocop-turns-10.html" target="_blank" rel="noopener">
@@ -36,133 +124,188 @@ what brought you here.
36
124
  </p>
37
125
 
38
126
  The purpose of this gem is to constrain the `rubocop` dependency of a project in
39
- a [SemVer compliant](https://semver.org/) (Semantic Versioning) way that aligns with the the desired minimum
40
- compatible/supported Ruby version.
41
-
42
- ## Ruby Version Support Matrix
43
-
44
- Adding this gem will facilitate the best practice of adding a `~> ` version constrained `rubocop` dependency, while
45
- minimizing the risk of a rubocop minor / patch upgrade breaking the build. See the
46
- official [compatibility matrix][rubocop-matrix] for `rubocop`.
47
-
48
- `rubocop-ruby2_2` (this gem) will install on any version of Ruby >= 2.2, and can be used to analyze code intended to support Ruby >= 2.2.
49
-
50
- * 🧊 - Install on Ruby `<version>`
51
- * 🏃‍ - Will Execute on Ruby `<version>`
52
- * 🪷 - Will not execute correctly on Ruby `<version>`
53
- * 🛠 - Lint code with Ruby `<version>` syntax as the target
54
-
55
- | gem | 1.8.7 | 1.9.3 | 2.0 | 2.1 | 2.2 | 2.3 | 2.4 | 2.5 | 2.6 | 2.7 | 3.0 | 3.1 | ruby-head | jruby-head |
56
- |-------------------------|---------------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|------------|
57
- | [rubocop-ruby1_9][rr19] | [🛠][what1_8] | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🪷 | 🧊 🪷 | 🧊 🪷 |
58
- | [rubocop-ruby2_0][rr20] | | | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🪷 | 🧊 🪷 | 🧊 🪷 |
59
- | [rubocop-ruby2_1][rr21] | | | | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🪷 | 🧊 🪷 | 🧊 🪷 |
60
- | [rubocop-ruby2_2][rr22] | | | | | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊‍ 🪷 | 🧊 🪷 | 🧊 🪷 | 🧊 🪷 |
61
- | [rubocop-ruby2_3][rr23] | | | | | | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🪷 | 🧊 🪷 | 🧊 🪷 |
62
- | [rubocop-ruby2_4][rr24] | | | | | | | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🪷 | 🧊 🪷 | 🧊 🪷 |
63
- | [rubocop-ruby2_5][rr25] | | | | | | | | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🪷 |
64
- | [rubocop-ruby2_6][rr26] | | | | | | | | 🛠 | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🪷 |
65
- | [rubocop-ruby2_7][rr27] | | | | | | | | 🛠 | 🛠 | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ |
66
- | [rubocop-ruby3_0][rr30] | | | | | | | | 🛠 | 🛠 | 🛠 | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ |
67
- | [rubocop-ruby3_1][rr31] | | | | | | | | 🛠 | 🛠 | 🛠 | 🛠 | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ |
68
-
69
- [rr19]: https://github.com/rubocop-lts/rubocop-ruby1_9
70
- [rr20]: https://github.com/rubocop-lts/rubocop-ruby2_0
71
- [rr21]: https://github.com/rubocop-lts/rubocop-ruby2_1
72
- [rr22]: https://github.com/rubocop-lts/rubocop-ruby2_2
73
- [rr23]: https://github.com/rubocop-lts/rubocop-ruby2_3
74
- [rr24]: https://github.com/rubocop-lts/rubocop-ruby2_4
75
- [rr25]: https://github.com/rubocop-lts/rubocop-ruby2_5
76
- [rr26]: https://github.com/rubocop-lts/rubocop-ruby2_6
77
- [rr27]: https://github.com/rubocop-lts/rubocop-ruby2_7
78
- [rr30]: https://github.com/rubocop-lts/rubocop-ruby3_0
79
- [rr31]: https://github.com/rubocop-lts/rubocop-ruby3_1
80
- [what1_8]: https://github.com/rubocop-lts/rubocop-ruby1_9#what-about-ruby-18
81
- [rubocop-matrix]: https://github.com/rubocop/rubocop/blob/master/docs/modules/ROOT/pages/compatibility.adoc#support-matrix
127
+ a [SemVer compliant][semver]
128
+ (Semantic Versioning, [Major Versions are Not Sacred][major-versions-not-sacred])
129
+ way that aligns with its desired minimum compatible/supported Ruby version.
130
+ Secondary purpose is to provide default configurations for a bevy of RuboCop-related plugins.
131
+
132
+ ## 💎 Ruby Version Support
133
+
134
+ This gem facilitates equivalent of adding a `~> ` version constrained `rubocop`(-ish +more) dependency,
135
+ thus minimizing the risk of a rubocop minor / patch upgrade breaking the build.
136
+
137
+ ### What's that you say?
138
+
139
+ This gem will install a suite of tools that will **analyze & lint code** intended to support any version of Ruby >= 2.0.
140
+
141
+ This gem helps insulate projects from RuboCop churn by enshrining many conventions
142
+ that have been shown over years to reduce problems.
143
+
144
+ #### Background
145
+
146
+ Each [spring `rubocop` drops][rubocop-support-matrix] the ability to **install** and **run** `rubocop` on an EOL'd Ruby.
147
+ Eventually `rubocop` will drop the ability to **analyze code** intended to support an EOL'd Ruby,
148
+ as they already have for Ruby 1.9. RuboCop has never run properly on Ruby 1.8.
149
+ This gem, via [standard (Standard Ruby)][standardrb], allows RuboCop to analyze Ruby 2.2 code,
150
+ by turning off certain rules that only apply to later Rubies.
151
+
152
+ When the `rubocop` team makes _any_ of these changes they
153
+ [only bump the minor version][rubocop-versioning] of RuboCop,
154
+ in violation of SemVer ([they disagree][rubocop-release-policy]).
155
+
156
+ In other words, RuboCop intentionally does not bump the major version when they drop
157
+ _analysis_, _runtime_, or _installation_ support for a given version of Ruby.
158
+
159
+ This is a primary _raison d’être_ for this project.
160
+ To get a better understanding of how SemVer is intended to work read this article from the creator of SemVer:
161
+
162
+ - ["Major Version Numbers are Not Sacred"][major-versions-not-sacred]!
163
+
164
+ [rubocop-support-matrix]: https://docs.rubocop.org/rubocop/compatibility.html#support-matrix
165
+ [rubocop-versioning]: https://docs.rubocop.org/rubocop/versioning.html
166
+ [rubocop-release-policy]: https://docs.rubocop.org/rubocop/versioning.html#release-policy
167
+ [major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
168
+ [standardrb]: https://github.com/standardrb/standard
169
+
170
+ ### 👪 A Gem Family
171
+
172
+ The `rubocop-lts` family of gems has a version supporting any version of Ruby you need.
173
+ They can be used as development dependencies for libraries or applications.
174
+
175
+ - [`rubocop-lts`][rlts]
176
+ - [`standard-rubocop-lts`][stdrlts]
177
+ - [`rubocop-ruby1_8`][rr18]
178
+ - [`rubocop-ruby1_9`][rr19]
179
+ - [`rubocop-ruby2_0`][rr20]
180
+ - [`rubocop-ruby2_1`][rr21]
181
+ - [`rubocop-ruby2_2`][rr22]
182
+ - [`rubocop-ruby2_3`][rr23]
183
+ - [`rubocop-ruby2_4`][rr24]
184
+ - [`rubocop-ruby2_5`][rr25]
185
+ - [`rubocop-ruby2_6`][rr26]
186
+ - [`rubocop-ruby2_7`][rr27]
187
+ - [`rubocop-ruby3_0`][rr30]
188
+ - [`rubocop-ruby3_1`][rr31]
189
+ - [`rubocop-ruby3_2`][rr32]
190
+
191
+ [rlts]: https://github.com/rubocop-lts/rubocop-lts#-how-to-untie-gorgons-knot
192
+ [stdrlts]: https://github.com/rubocop-lts/standard-rubocop-lts
193
+ [rr18]: https://gitlab.com/rubocop-lts/standard-rubocop-lts
194
+ [rr19]: https://gitlab.com/rubocop-lts/rubocop-ruby1_9
195
+ [rr20]: https://gitlab.com/rubocop-lts/rubocop-ruby2_0
196
+ [rr21]: https://gitlab.com/rubocop-lts/rubocop-ruby2_1
197
+ [rr22]: https://gitlab.com/rubocop-lts/rubocop-ruby2_2
198
+ [rr23]: https://gitlab.com/rubocop-lts/rubocop-ruby2_3
199
+ [rr24]: https://gitlab.com/rubocop-lts/rubocop-ruby2_4
200
+ [rr25]: https://gitlab.com/rubocop-lts/rubocop-ruby2_5
201
+ [rr26]: https://gitlab.com/rubocop-lts/rubocop-ruby2_6
202
+ [rr27]: https://gitlab.com/rubocop-lts/rubocop-ruby2_7
203
+ [rr30]: https://gitlab.com/rubocop-lts/rubocop-ruby3_0
204
+ [rr31]: https://gitlab.com/rubocop-lts/rubocop-ruby3_1
205
+ [rr32]: https://gitlab.com/rubocop-lts/rubocop-ruby3_2
82
206
 
83
207
  ## 🗿 Stable
84
208
 
85
- All releases of this gem are stable releases. The first version is `1.0.0`.
209
+ All releases of this gem are stable releases.
210
+ We do not release new versions for every release of `rubocop`,
211
+ as this gem is tied to [standard (Standard Ruby)][standardrb].
212
+ A typical release cycle for a gem in the `rubocop-lts` family is roughly every six months,
213
+ though eventually analysis support for an old version of Ruby will be dropped.
214
+ When that happens releases of the `rubocop-lts` gem for that version of Ruby will (mostly) cease.
86
215
 
87
216
  ## ✨ Installation
88
217
 
89
- Without bundler execute:
218
+ Install the gem and add to the application's Gemfile by executing:
90
219
 
91
- $ gem install
220
+ $ bundle add rubocop-ruby2_2 -r false
92
221
 
93
- Add this line to your application's Gemfile:
222
+ If bundler is not being used to manage dependencies, install the gem by executing:
94
223
 
95
- ```ruby
96
- gem 'rubocop-ruby2_2', '~> 1.0', require: false
224
+ $ gem install rubocop-ruby2_2
225
+
226
+ ## 🔧 Basic Usage
227
+
228
+ If you are using Rails, building a Rubygem, or not using RSpec, see ["Advanced Usage"](#advanced-usage).
229
+ Otherwise, if you using this in plain Ruby _and_ RSpec, you can add to the top of your project's `.rubocop.yml` configuration file:
230
+
231
+ ```yaml
232
+ inherit_gem:
233
+ rubocop-ruby2_2: rubocop.yml
97
234
  ```
98
235
 
99
- And then execute:
236
+ Among _many_ other settings, this has the effect of declaring the following:
237
+
238
+ ```yaml
239
+ AllCops:
240
+ NewCops: enable
241
+ ```
100
242
 
101
- $ bundle
243
+ Let's talk about these settings. (TODO: Document some of the other settings!)
102
244
 
103
- Or install it yourself as:
245
+ ### ⚙️ `NewCops: enable`
104
246
 
105
- $ gem install rubocop-ruby2_2
247
+ Upgrades to the latest RuboCop can include all kinds of changes, including removing support for the version of Ruby your project uses, or adding a cop that may not work with some of your syntax (e.g. [some use cases of 'module_function`](https://github.com/rubocop/rubocop/issues/5953#issuecomment-805921993)). Accepting new cops arriving in a new version of RuboCop can feel risky, especially when it doesn't follow SemVer.
106
248
 
107
- ## 🔧 Usage
249
+ But this gem shoehorns RuboCop into SemVer, under the watchful eye of [standard (Standard Ruby)][standardrb]... so `NewCops` is now safe(r)! If you use a dependency greening tool like GitHub's `dependabot`, or the excellent alternatives [depfu](https://depfu.com/), and [`renovate`](https://www.whitesourcesoftware.com/free-developer-tools/renovate/), then you can see the effect of a minor / major version bump in your CI Build!
108
250
 
109
- The following is optional. We'll discuss why you might want to do this after you see what it does.
251
+ ## Advanced Usage
110
252
 
111
- Add to the top of your project's `.rubocop.yml` configuration file:
253
+ ### Linting Ruby + RSpec
112
254
 
113
255
  ```yaml
114
256
  inherit_gem:
115
- rubocop-ruby2_2: rubocop.yml
257
+ rubocop-ruby2_2: rubocop-lts/ruby_rspec.yml
258
+ # Note: technically the above is the same as the "Basic Usage" below, so if specificity is not your jam:
259
+ # rubocop-ruby2_2: rubocop.yml
116
260
  ```
117
261
 
118
- This has the same effect as you declaring the following in your `.rubocop.yml`:
262
+ ### Linting Ruby w/o RSpec
119
263
 
120
264
  ```yaml
121
- AllCops:
122
- # remove if already present in your `.rubocop.yml` to gain the full benefit of this gem!
123
- TargetRubyVersion: 2.2
124
- # The sibling gems for newer versions of Ruby support the NewCops directive as soon as RuboCop adds it.
125
- # NewCops: enable
126
-
127
- # Removed as of 0.80.0
128
- # braces setting is for compatibility with Ruby 2.7+
129
- # See:
130
- # * https://github.com/rubocop/rubocop/issues/7641
131
- # * https://github.com/rubocop/rubocop/pull/7643
132
- Style/BracesAroundHashParameters:
133
- Enabled: true
134
- EnforcedStyle: context_dependent
265
+ inherit_gem:
266
+ rubocop-ruby2_2: rubocop-lts/ruby.yml
135
267
  ```
136
268
 
137
- Let's talk about these settings.
138
-
139
- ### TargetRubyVersion
269
+ ### Linting Rails + RSpec
140
270
 
141
- Allowing this gem to manage the target ruby version means you can switch to a different gem within the family when you upgrade to the next version of Ruby, and have nothing else to change. A single line in the `Gemfile`, and you are done.
271
+ ```yaml
272
+ inherit_gem:
273
+ rubocop-ruby2_2: rubocop-lts/rails_rspec.yml
274
+ ```
142
275
 
143
- ### NewCops: enable
276
+ #### Linting Rails w/o RSpec
144
277
 
145
- Commented out! Setting does not exist in very old versions of rubocop that works with Ruby < 2.4.
278
+ ```yaml
279
+ inherit_gem:
280
+ rubocop-ruby2_2: rubocop-lts/rails.yml
281
+ ```
146
282
 
147
- If you want to use this you'll have to upgrade to Ruby >= 2.4 and use the appropriate sibling gem, e.g. [`rubocop-ruby2_4`][2-4].
283
+ #### Linting a RubyGem + RSpec
148
284
 
149
- [2-4]: https://github.com/rubocop-lts/rubocop-ruby2_4
285
+ ```yaml
286
+ inherit_gem:
287
+ rubocop-ruby2_2: rubocop-lts/rubygem_rspec.yml
288
+ ```
150
289
 
151
- ### Style/BracesAroundHashParameters
290
+ #### Linting a RubyGem w/o RSpec
152
291
 
153
- In an effort to help users of this gem prepare their code for more modern Rubies it has been enabled and configured with `coontext_dependent` as the closest parallel to what will work with Ruby 2.7+, and also retain compatibility with old Ruby.
292
+ ```yaml
293
+ inherit_gem:
294
+ rubocop-ruby2_2: rubocop-lts/rubygem.yml
295
+ ```
154
296
 
155
- See:
156
- * https://github.com/rubocop/rubocop/issues/7641
157
- * https://github.com/rubocop/rubocop/pull/7643
297
+ ## 💻 Development
158
298
 
159
- NOTE: This cop was removed from RuboCop as of 0.80.0, so if you are on modern RuboCop and reading this for some reason, you can't use it.
299
+ After checking out the repo, run `bin/setup` to install dependencies.
300
+ Then, run `rake spec` to run the tests w/ coverage,
301
+ or `bin/rake` to run tests w/ coverage, and linting.
302
+ You can also run `bin/console` for an interactive prompt that will allow you to experiment.
160
303
 
161
- ## Development
304
+ To install this gem onto your local machine, run `bundle exec rake install`.
162
305
 
163
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
306
+ ### 🚀 Release Instructions
164
307
 
165
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
308
+ See [CONTRIBUTING.md][contributing].
166
309
 
167
310
  ## ⚡️ Contributing
168
311
 
@@ -177,37 +320,37 @@ Made with [contributors-img](https://contrib.rocks).
177
320
  ## 📄 License
178
321
 
179
322
  The gem is available as open source under the terms of
180
- the [MIT License][license] [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)][license-ref].
181
- See [LICENSE][license] for the official [Copyright Notice][copyright-notice-explainer].
323
+ the [MIT License][license] [![License: MIT][license-img]][license-ref].
324
+ See [LICENSE.txt][license] for the official [Copyright Notice][copyright-notice-explainer].
182
325
 
183
326
  <details>
184
- <summary>Project Logos (rubocop-ruby3_1)</summary>
327
+ <summary>Project Logos (rubocop-ruby2_2)</summary>
185
328
 
186
329
  See [docs/images/logo/README.txt][project-logos]
187
330
  </details>
188
331
 
189
332
  <details>
190
- <summary>Organization Logo (rubocop-semver)</summary>
333
+ <summary>Organization Logo (rubocop-lts)</summary>
191
334
 
192
335
  Author: [Yusuf Evli][org-logo-author]
193
336
  Source: [Unsplash][org-logo-source]
194
337
  License: [Unsplash License][org-logo-license]
195
338
  </details>
196
339
 
197
- [project-logos]: https://github.com/rubocop-lts/rubocop-ruby3_1/blob/main/docs/images/logo/README.txt
340
+ [project-logos]: https://github.com/rubocop-lts/rubocop-ruby2_2/blob/main/docs/images/logo/README.txt
198
341
  [org-logo-author]: https://unsplash.com/@yusufevli
199
342
  [org-logo-source]: https://unsplash.com/photos/yaSLNLtKRIU
200
343
  [org-logo-license]: https://unsplash.com/license
201
344
 
202
345
  ### © Copyright
203
346
 
204
- * Copyright (c) 2022 [Peter H. Boling][peterboling] of [Rails Bling][railsbling]
205
-
206
- [copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
347
+ * Copyright (c) 2022 - 2023 [Peter H. Boling][peterboling] of [Rails Bling][railsbling]
207
348
 
208
349
  ## 🤝 Code of Conduct
209
350
 
210
- Everyone interacting in the Rubocop::Ruby22 project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/rubocop-lts/rubocop-ruby2_2/blob/main/CODE_OF_CONDUCT.md).
351
+ Everyone interacting in this project's codebases, issue trackers, [chat rooms][🏘chat] and mailing lists is expected to follow the [code of conduct][🤝conduct].
352
+
353
+ [🤝conduct]: https://gitlab.com/rubocop-lts/rubocop-ruby2_2/-/blob/main/CODE_OF_CONDUCT.md
211
354
 
212
355
  ## 📌 Versioning
213
356
 
@@ -222,63 +365,36 @@ the [Pessimistic Version Constraint][pvc] with two digits of precision.
222
365
  For example:
223
366
 
224
367
  ```ruby
225
- spec.add_dependency "rubocop-ruby2_2", "~> 1.0"
368
+ spec.add_dependency "rubocop-ruby2_2", "~> 2.0"
226
369
  ```
227
370
 
371
+ [aboutme]: https://about.me/peter.boling
372
+ [actions]: https://github.com/rubocop-lts/rubocop-ruby2_2/actions
373
+ [angelme]: https://angel.co/peter-boling
374
+ [blogpage]: http://www.railsbling.com/tags/rubocop-ruby2_2/
375
+ [codecov_coverage]: https://codecov.io/gh/rubocop-lts/rubocop-ruby2_2
376
+ [code_triage]: https://www.codetriage.com/rubocop-lts/rubocop-ruby2_2
377
+ [🏘chat]: https://gitter.im/rubocop-lts/community
378
+ [climate_coverage]: https://codeclimate.com/github/rubocop-lts/rubocop-ruby2_2/test_coverage
379
+ [climate_maintainability]: https://codeclimate.com/github/rubocop-lts/rubocop-ruby2_2/maintainability
228
380
  [copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
229
-
230
- [gh_discussions]: https://github.com/rubocop-lts/rubocop-ruby2_2/discussions
231
-
232
381
  [conduct]: https://github.com/rubocop-lts/rubocop-ruby2_2/blob/main/CODE_OF_CONDUCT.md
233
-
234
382
  [contributing]: https://github.com/rubocop-lts/rubocop-ruby2_2/blob/main/CONTRIBUTING.md
235
-
236
- [security]: https://github.com/rubocop-lts/rubocop-ruby2_2/blob/main/SECURITY.md
237
-
238
- [license]: https://github.com/rubocop-lts/rubocop-ruby2_2/blob/main/LICENSE.txt
239
-
383
+ [devto]: https://dev.to/galtzo
384
+ [documentation]: https://rubydoc.info/github/rubocop-lts/rubocop-ruby2_2/main
385
+ [followme]: https://img.shields.io/twitter/follow/galtzo.svg?style=social&label=Follow
386
+ [gh_discussions]: https://github.com/rubocop-lts/rubocop-ruby2_2/discussions
387
+ [gh_sponsors]: https://github.com/sponsors/pboling
388
+ [issues]: https://github.com/rubocop-lts/rubocop-ruby2_2/issues
389
+ [liberapay_donate]: https://liberapay.com/pboling/donate
390
+ [license]: LICENSE.txt
240
391
  [license-ref]: https://opensource.org/licenses/MIT
241
-
242
- [semver]: http://semver.org/
243
-
392
+ [license-img]: https://img.shields.io/badge/License-MIT-green.svg
393
+ [peterboling]: http://www.peterboling.com
244
394
  [pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
245
-
246
395
  [railsbling]: http://www.railsbling.com
247
-
248
- [peterboling]: http://www.peterboling.com
249
-
250
- [aboutme]: https://about.me/peter.boling
251
-
252
- [angelme]: https://angel.co/peter-boling
253
-
254
- [coderme]:http://coderwall.com/pboling
255
-
256
- [followme-img]: https://img.shields.io/twitter/follow/galtzo.svg?style=social&label=Follow
257
-
258
- [tweetme]: http://twitter.com/galtzo
259
-
260
- [politicme]: https://nationalprogressiveparty.org
261
-
262
- [documentation]: https://rubydoc.info/github/rubocop-lts/rubocop-ruby2_2/main
263
-
264
- [source]: https://github.com/rubocop-lts/rubocop-ruby2_2/
265
-
266
- [actions]: https://github.com/rubocop-lts/rubocop-ruby2_2/actions
267
-
268
- [issues]: https://github.com/rubocop-lts/rubocop-ruby2_2/issues
269
-
270
- [climate_maintainability]: https://codeclimate.com/github/rubocop-lts/rubocop-ruby2_2/maintainability
271
-
272
- [code_triage]: https://www.codetriage.com/rubocop-lts/rubocop-ruby2_2
273
-
274
- [blogpage]: http://www.railsbling.com/tags/rubocop-ruby2_2/
275
-
276
396
  [rubygems]: https://rubygems.org/gems/rubocop-ruby2_2
277
-
278
- [chat]: https://gitter.im/rubocop-lts/rubocop-ruby2_2?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
279
-
280
- [maintenancee_policy]: https://guides.rubyonrails.org/maintenance_policy.html#security-issues
281
-
282
- [liberapay_donate]: https://liberapay.com/pboling/donate
283
-
284
- [gh_sponsors]: https://github.com/sponsors/pboling
397
+ [security]: https://github.com/rubocop-lts/rubocop-ruby2_2/blob/main/SECURITY.md
398
+ [semver]: http://semver.org/
399
+ [source]: https://github.com/rubocop-lts/rubocop-ruby2_2/
400
+ [tweetme]: http://twitter.com/galtzo
data/SECURITY.md CHANGED
@@ -2,12 +2,13 @@
2
2
 
3
3
  ## Supported Versions
4
4
 
5
- | Version | Supported |
6
- | ------- | ------------------ |
7
- | 0.x | :white_check_mark: |
5
+ | Version | Supported |
6
+ |---------|-----------|
7
+ | 2.x | |
8
+ | 1.x | ❌ |
8
9
 
9
10
  ## Reporting a Vulnerability
10
11
 
11
12
  Peter Boling is the primary maintainer of this gem. Please find a way
12
13
  to [contact him directly](https://railsbling.com/contact) to report the issue. Include as much relevant information as
13
- possible.
14
+ possible.
@@ -0,0 +1,14 @@
1
+ module Rubocop
2
+ module Ruby22
3
+ class Railtie < Rails::Railtie
4
+ railtie_name :rubocop_ruby2_2
5
+
6
+ if Rails.env.test? || Rails.env.development?
7
+ rake_tasks do
8
+ path = File.expand_path(__dir__)
9
+ Dir.glob("#{path}/rakelib/**/*.rake").each { |f| load f }
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Rubocop
4
4
  module Ruby22
5
- VERSION = "1.0.4".freeze
5
+ module Version
6
+ VERSION = "2.0.1"
7
+ end
6
8
  end
7
9
  end
@@ -1,9 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # external libs
4
+ require "version_gem"
5
+
6
+ # this gem
3
7
  require_relative "ruby2_2/version"
8
+ # :nocov:
9
+ require_relative "ruby2_2/railtie" if defined?(Rails::Railtie)
10
+ # :nocov:
4
11
 
5
12
  module Rubocop
6
13
  # Namespace of this library
7
14
  module Ruby22
15
+ module_function def install_tasks
16
+ load "rubocop/ruby2_2/tasks.rake"
17
+ end
8
18
  end
9
19
  end
20
+
21
+ Rubocop::Ruby22::Version.class_eval do
22
+ extend VersionGem::Basic
23
+ end
@@ -0,0 +1,11 @@
1
+ # Customizations/Deviations from Standard/Shopify for RuboCop-LTS Rails Coding Standards
2
+ inherit_from:
3
+ - ruby.yml
4
+ - strict/rails.yml
5
+
6
+ require:
7
+ - rubocop-rails
8
+ - standard-rails
9
+ - betterlint
10
+
11
+ # Rails specific customizations
@@ -0,0 +1,6 @@
1
+ # Customizations/Deviations from Standard/Shopify for RuboCop-LTS Rails w/ RSpec Coding Standards
2
+ inherit_from:
3
+ - rails.yml
4
+ - rspec.yml
5
+
6
+ # Rails/RSpec specific customizations
@@ -0,0 +1,9 @@
1
+ require:
2
+ # I setup RSpec on every project. Do you?
3
+ - rubocop-rspec
4
+
5
+ inherit_gem:
6
+ rspec-block_is_expected: rubocop.yml
7
+
8
+ inherit_from:
9
+ - strict/rspec.yml