Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rubocop/rubocop-rails
A RuboCop extension focused on enforcing Rails best practices and coding conventions.
https://github.com/rubocop/rubocop-rails
code-formatter hacktoberfest linter rails rubocop ruby static-code-analysis
Last synced: 21 days ago
JSON representation
A RuboCop extension focused on enforcing Rails best practices and coding conventions.
- Host: GitHub
- URL: https://github.com/rubocop/rubocop-rails
- Owner: rubocop
- License: mit
- Created: 2018-06-10T05:22:00.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-06-15T07:46:08.000Z (5 months ago)
- Last Synced: 2024-06-16T05:29:49.664Z (5 months ago)
- Topics: code-formatter, hacktoberfest, linter, rails, rubocop, ruby, static-code-analysis
- Language: Ruby
- Homepage: https://docs.rubocop.org/rubocop-rails
- Size: 27.4 MB
- Stars: 790
- Watchers: 17
- Forks: 249
- Open Issues: 156
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-ruby - Rubocop Rails - A RuboCop extension focused on enforcing Rails best practices and coding conventions. (Code Formatting)
README
# RuboCop Rails
[![Gem Version](https://badge.fury.io/rb/rubocop-rails.svg)](https://badge.fury.io/rb/rubocop-rails)
[![CI](https://github.com/rubocop/rubocop-rails/actions/workflows/test.yml/badge.svg)](https://github.com/rubocop/rubocop-rails/actions/workflows/test.yml)A [RuboCop](https://github.com/rubocop/rubocop) extension focused on enforcing Rails best practices and coding conventions.
Note: This repository manages rubocop-rails gem (>= 2.0.0). rubocop-rails gem (<= 1.5.0) has been renamed to [rubocop-rails_config](https://rubygems.org/gems/rubocop-rails_config) gem.
## Installation
Just install the `rubocop-rails` gem
```sh
$ gem install rubocop-rails
```or if you use bundler put this in your `Gemfile`
```ruby
gem 'rubocop-rails', require: false
```## Usage
You need to tell RuboCop to load the Rails extension. There are three
ways to do this:### RuboCop configuration file
Put this into your `.rubocop.yml`.
```yaml
require: rubocop-rails
```Alternatively, use the following array notation when specifying multiple extensions.
```yaml
require:
- rubocop-other-extension
- rubocop-rails
```Now you can run `rubocop` and it will automatically load the RuboCop Rails
cops together with the standard cops.### Command line
```sh
$ rubocop --require rubocop-rails
```Note: `--rails` option is required while `rubocop` command supports `--rails` option.
### Rake task
```ruby
require 'rubocop/rake_task'RuboCop::RakeTask.new do |task|
task.requires << 'rubocop-rails'
end
```## Rails configuration tip
In Rails 6.1+, add the following `config.generators.after_generate` setting to
your `config/environments/development.rb` to apply RuboCop autocorrection to code generated by `bin/rails g`.```ruby
# config/environments/development.rb
Rails.application.configure do
config.generators.after_generate do |files|
parsable_files = files.filter { |file| file.end_with?('.rb') }
unless parsable_files.empty?
system("bundle exec rubocop -A --fail-level=E #{parsable_files.shelljoin}", exception: true)
end
end
end
```It uses `rubocop -A` to apply `Style/FrozenStringLiteralComment` and other unsafe autocorrection cops.
`rubocop -A` is unsafe autocorrection, but code generated by default is simple and less likely to
be incompatible with `rubocop -A`. If you have problems you can replace it with `rubocop -a` instead.In Rails 7.2+, it is recommended to use `config.generators.apply_rubocop_autocorrect_after_generate!` instead of the above setting:
```diff
# config/environments/development.rb
Rails.application.configure do
(snip)
# Apply autocorrection by RuboCop to files generated by `bin/rails generate`.
- # config.generators.apply_rubocop_autocorrect_after_generate!
+ config.generators.apply_rubocop_autocorrect_after_generate!
end
```You only need to uncomment.
## The Cops
All cops are located under
[`lib/rubocop/cop/rails`](lib/rubocop/cop/rails), and contain
examples/documentation.In your `.rubocop.yml`, you may treat the Rails cops just like any other
cop. For example:```yaml
Rails/FindBy:
Exclude:
- lib/example.rb
```## Documentation
You can read a lot more about RuboCop Rails in its [official docs](https://docs.rubocop.org/rubocop-rails/).
## Compatibility
Rails cops support the following versions:
- Rails 4.2+
## Readme Badge
If you use RuboCop Rails in your project, you can include one of these badges in your readme to let people know that your code is written following the community Rails Style Guide.
[![Rails Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop/rubocop-rails)
[![Rails Style Guide](https://img.shields.io/badge/code_style-community-brightgreen.svg)](https://rails.rubystyle.guide)
Here are the Markdown snippets for the two badges:
``` markdown
[![Rails Style Guide](https://img.shields.io/badge/code_style-rubocop-brightgreen.svg)](https://github.com/rubocop/rubocop-rails)[![Rails Style Guide](https://img.shields.io/badge/code_style-community-brightgreen.svg)](https://rails.rubystyle.guide)
```## Contributing
Checkout the [contribution guidelines](CONTRIBUTING.md).
## License
`rubocop-rails` is MIT licensed. [See the accompanying file](LICENSE.txt) for
the full text.