SVG RuboCop Logo, Copyright (c) 2014 Dimiter Petrov, CC BY-NC 4.0, see docs/images/logo/README.txt SVG RuboCop Logo, Copyright (c) 2014 Dimiter Petrov, CC BY-NC 4.0, see docs/images/logo/README.txt Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5, see docs/images/logo/README.txt SemVer.org Logo by @maxhaz, see docs/images/logo/README.txt SemVer.org Logo by @maxhaz, see docs/images/logo/README.txt

# Rubocop::Ruby20 See the intro [blog post](https://dev.to/pboling/rubocop-ruby-matrix-gems-nj)! This gem requires no other gems. It depends on `rubocop`, but does not `require 'rubocop'`. Awareness of `rubocop`'s lack of [SemVer][semver] adherence isn't evenly dispersed in the Ruby community. The Rubocop team [has real reasons](https://github.com/semver/semver/issues/317) for [not following SemVer](https://github.com/rubocop/rubocop/issues/4243), but if you've found this project their reasons likely weigh less, in your context (e.g. running `rubocop` from command line), than what brought you here.

Explanation of non-SemVer compliance, @bbatsov

The purpose of this gem is to constrain the `rubocop` dependency of a project in a [SemVer compliant](https://semver.org/) (Semantic Versioning) way that aligns with the the desired minimum compatible/supported Ruby version. ## Ruby Version Support Matrix Adding this gem will facilitate the best practice of adding a `~> ` version constrained `rubocop` dependency, while minimizing the risk of a rubocop minor / patch upgrade breaking the build. See the official [compatibility matrix][rubocop-matrix] for `rubocop`. `rubocop-ruby2_0` (this gem) will install on any version of Ruby >= 2.0, and can be used to analyze code intended to support Ruby >= 2.0. * 🧊 - Install on Ruby `` * 🏃‍ - Will Execute on Ruby `` * 🪷 - Will not execute correctly on Ruby `` * 🛠 - Lint code with Ruby `` syntax as the target | 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 | |-------------------------|---------------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|-----------|------------| | [rubocop-ruby1_9][rr19] | [🛠][what1_8] | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🪷 | 🧊 🪷 | 🧊 🪷 | | [rubocop-ruby2_0][rr20] | | | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🪷 | 🧊 🪷 | 🧊 🪷 | | [rubocop-ruby2_1][rr21] | | | | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🪷 | 🧊 🪷 | 🧊 🪷 | | [rubocop-ruby2_2][rr22] | | | | | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊‍ 🪷 | 🧊 🪷 | 🧊 🪷 | 🧊 🪷 | | [rubocop-ruby2_3][rr23] | | | | | | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🪷 | 🧊 🪷 | 🧊 🪷 | | [rubocop-ruby2_4][rr24] | | | | | | | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🪷 | 🧊 🪷 | 🧊 🪷 | | [rubocop-ruby2_5][rr25] | | | | | | | | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🪷 | | [rubocop-ruby2_6][rr26] | | | | | | | | 🛠 | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🪷 | | [rubocop-ruby2_7][rr27] | | | | | | | | 🛠 | 🛠 | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | | [rubocop-ruby3_0][rr30] | | | | | | | | 🛠 | 🛠 | 🛠 | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | 🧊 🏃‍ | | [rubocop-ruby3_1][rr31] | | | | | | | | 🛠 | 🛠 | 🛠 | 🛠 | 🧊 🏃‍ 🛠 | 🧊 🏃‍ | 🧊 🏃‍ | [rr19]: https://github.com/rubocop-lts/rubocop-ruby1_9 [rr20]: https://github.com/rubocop-lts/rubocop-ruby2_0 [rr21]: https://github.com/rubocop-lts/rubocop-ruby2_1 [rr22]: https://github.com/rubocop-lts/rubocop-ruby2_2 [rr23]: https://github.com/rubocop-lts/rubocop-ruby2_3 [rr24]: https://github.com/rubocop-lts/rubocop-ruby2_4 [rr25]: https://github.com/rubocop-lts/rubocop-ruby2_5 [rr26]: https://github.com/rubocop-lts/rubocop-ruby2_6 [rr27]: https://github.com/rubocop-lts/rubocop-ruby2_7 [rr30]: https://github.com/rubocop-lts/rubocop-ruby3_0 [rr31]: https://github.com/rubocop-lts/rubocop-ruby3_1 [what1_8]: https://github.com/rubocop-lts/rubocop-ruby1_9#what-about-ruby-18 [rubocop-matrix]: https://github.com/rubocop/rubocop/blob/master/docs/modules/ROOT/pages/compatibility.adoc#support-matrix ## 🗿 Stable All releases of this gem are stable releases. The first version is `1.0.0`. ## ✨ Installation Without bundler execute: $ gem install Add this line to your application's Gemfile: ```ruby gem 'rubocop-ruby2_0', '~> 1.0', require: false ``` And then execute: $ bundle Or install it yourself as: $ gem install rubocop-ruby2_0 ## 🔧 Usage The following is optional. We'll discuss why you might want to do this after you see what it does. Add to the top of your project's `.rubocop.yml` configuration file: ```yaml inherit_gem: rubocop-ruby2_0: rubocop.yml ``` This has the same effect as you declaring the following in your `.rubocop.yml`: ```yaml AllCops: # remove if already present in your `.rubocop.yml` to gain the full benefit of this gem! TargetRubyVersion: 2.0 # The sibling gems for newer versions of Ruby support the NewCops directive as soon as RuboCop adds it. # NewCops: enable Style/BracesAroundHashParameters: Enabled: true EnforcedStyle: context_dependent ``` Let's talk about these settings. ## TargetRubyVersion 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. ## NewCops: enable Commented out! Setting does not exist in very old versions of rubocop that works with Ruby < 2.4. 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]. [2-4]: https://github.com/rubocop-lts/rubocop-ruby2_4 ## Style/BracesAroundHashParameters 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. See: * https://github.com/rubocop/rubocop/issues/7641 * https://github.com/rubocop/rubocop/pull/7643 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. ## Development 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. 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). ## ⚡️ Contributing See [CONTRIBUTING.md][contributing] ## 🌈 Contributors [![Contributors](https://contrib.rocks/image?repo=rubocop-lts/rubocop-ruby2_0)]("https://github.com/rubocop-lts/rubocop-ruby2_0/graphs/contributors") Made with [contributors-img](https://contrib.rocks). ## 📄 License The gem is available as open source under the terms of the [MIT License][license] [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)][license-ref]. See [LICENSE][license] for the official [Copyright Notice][copyright-notice-explainer].
Project Logos (rubocop-ruby2_0) See [docs/images/logo/README.txt][project-logos]
Organization Logo (rubocop-semver) Author: [Yusuf Evli][org-logo-author] Source: [Unsplash][org-logo-source] License: [Unsplash License][org-logo-license]
[project-logos]: https://github.com/rubocop-lts/rubocop-ruby2_0/blob/main/docs/images/logo/README.txt [org-logo-author]: https://unsplash.com/@yusufevli [org-logo-source]: https://unsplash.com/photos/yaSLNLtKRIU [org-logo-license]: https://unsplash.com/license ### © Copyright * Copyright (c) 2022 [Peter H. Boling][peterboling] of [Rails Bling][railsbling] [copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year ## 🤝 Code of Conduct Everyone interacting in the Rubocop::Ruby20 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_0/blob/main/CODE_OF_CONDUCT.md). ## 📌 Versioning This library aims to adhere to [Semantic Versioning 2.0.0][semver]. Violations of this scheme should be reported as bugs. Specifically, if a minor or patch version is released that breaks backward compatibility, a new version should be immediately released that restores compatibility. Breaking changes to the public API will only be introduced with new major versions. As a result of this policy, you can (and should) specify a dependency on this gem using the [Pessimistic Version Constraint][pvc] with two digits of precision. For example: ```ruby spec.add_dependency "rubocop-ruby2_0", "~> 1.0" ``` [copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year [gh_discussions]: https://github.com/rubocop-lts/rubocop-ruby2_0/discussions [conduct]: https://github.com/rubocop-lts/rubocop-ruby2_0/blob/main/CODE_OF_CONDUCT.md [contributing]: https://github.com/rubocop-lts/rubocop-ruby2_0/blob/main/CONTRIBUTING.md [security]: https://github.com/rubocop-lts/rubocop-ruby2_0/blob/main/SECURITY.md [license]: https://github.com/rubocop-lts/rubocop-ruby2_0/blob/main/LICENSE.txt [license-ref]: https://opensource.org/licenses/MIT [semver]: http://semver.org/ [pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint [railsbling]: http://www.railsbling.com [peterboling]: http://www.peterboling.com [aboutme]: https://about.me/peter.boling [angelme]: https://angel.co/peter-boling [coderme]:http://coderwall.com/pboling [followme-img]: https://img.shields.io/twitter/follow/galtzo.svg?style=social&label=Follow [tweetme]: http://twitter.com/galtzo [politicme]: https://nationalprogressiveparty.org [documentation]: https://rubydoc.info/github/rubocop-lts/rubocop-ruby2_0/main [source]: https://github.com/rubocop-lts/rubocop-ruby2_0/ [actions]: https://github.com/rubocop-lts/rubocop-ruby2_0/actions [issues]: https://github.com/rubocop-lts/rubocop-ruby2_0/issues [climate_maintainability]: https://codeclimate.com/github/rubocop-lts/rubocop-ruby2_0/maintainability [code_triage]: https://www.codetriage.com/rubocop-lts/rubocop-ruby2_0 [blogpage]: http://www.railsbling.com/tags/rubocop-ruby2_0/ [rubygems]: https://rubygems.org/gems/rubocop-ruby2_0 [chat]: https://gitter.im/rubocop-lts/rubocop-ruby2_0?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge [maintenancee_policy]: https://guides.rubyonrails.org/maintenance_policy.html#security-issues [liberapay_donate]: https://liberapay.com/pboling/donate [gh_sponsors]: https://github.com/sponsors/pboling