ezCater custom cops and shared RuboCop configuration.
RuboCop is a static code analyzer that can enforce style conventions as well as identify common problems.
Add this line to your application's Gemfile:
group :development do gem "ezcater_rubocop", require: false end
Or to your gem's gemspec file:
And then execute:
$ bundle install
Or install it yourself as:
$ gem install ezcater_rubocop
To use one of the shared RuboCop configurations from this gem, you must define a .rubocop.yml file in your project:
inherit_gem: ezcater_rubocop: conf/rubocop_rails.yml
Further customization of RuboCop for your local project may be added to this file.
- rubocop: Assumes RSpec is used and requires rubocop-rspec. This configuration should be used for gems.
- rubocop_gem: For use in Ruby gem projects, this inherits from the rubocop configuration.
- rubocop_rails: For Rails projects, this inherits from the rubocop configuration.
rubocop for an entire project:
$ bundle exec rubocop
rubocop command-line for additional options including auto-generating
configuration for existing offenses and auto-correction.
This gem contains a script,
circle_rubocop.rb, that can be used to run RuboCop in CI.
The behavior of the script is that all files are checked on main or if the rubocop configuration has changed. On non-main branches, only the files added or changed on the branch are checked.
For non-main branches,
[rubocop skip] can be included in the commit message to skip
This gem is using Semantic Versioning. All version bumps should increment using
MAJOR.MINOR.PATCH based on changes.
When adding a new cop, please enable the cop and release a new major version. This allows us to
constantly roll out improvements without clients having their suite break unknowingly. When a
breaking change is released, users can opt to use
--regenerate-todo to update their TODO file. Do
not add cops with
enabled: false unless you want that cop to always be disabled.
FeatureFlagActive - Enforce the proper arguments are given to
- FeatureFlagNameValid - Enforce correct flag name format is being used.
RailsConfiguration - Enforce use of
RequireGqlErrorHelpers - Use the helpers provided by
GQLErrorsinstead of raising
- RspecDotNotSelfDot - Enforce "." instead of "self." and "::" for example group description.
RspecMatchOrderedArray - Enforce use of
match_ordered_arraymatcher instead of
eqmatcher. This matcher comes from the ezcater_matchers gem.
RspecRequireBrowserMock - Enforce use of
mock_custom_browserhelpers instead of mocking
RspecRequireFeatureFlagMock - Enforce use of
mock_feature_flaghelper instead of mocking
RspecRequireHttpStatusMatcher - Use the HTTP status code matcher, like
expect(response).to have_http_status :bad_request, rather than
expect(response.code).to eq 400
StyleDig - Recommend
digfor deeply nested access.
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.
Releasing a New Version
To release a new version, update the version number in
version.rb, merge your PR to
main, and then run
bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the
.gem file to rubygems.org.
Bug reports and pull requests are welcome on GitHub at https://github.com/ezcater/ezcater_rubocop.
The gem is available as open source under the terms of the MIT License.