Overcommit
rubocop-rails
Overcommit | rubocop-rails | |
---|---|---|
5 | 7 | |
3,873 | 782 | |
- | 1.3% | |
6.6 | 9.0 | |
20 days ago | 1 day ago | |
Ruby | Ruby | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Overcommit
-
Linting and Auto-formatting Ruby Code With RuboCop
A great way to ensure that all Ruby code in a project is linted and formatted properly before being checked into source control is by setting up a Git pre-commit hook that runs RuboCop on each staged file. This article will show you how to set it up with Overcommit, a tool for managing and configuring Git pre-commit hooks, but you can also integrate RuboCop with other tools if you already have an existing pre-commit workflow.
-
Tailwind CSS class sorter β the custom way
As a team we want to ensure that everybody commits our templates with classes rightly ordered. We use Overcommit to enforce consistency but any similar tool will do.
-
Run RuboCop on git commit with Overcommit Gem
# Use this file to configure the Overcommit hooks you wish to use. This will # extend the default configuration defined in: # https://github.com/sds/overcommit/blob/master/config/default.yml # # At the topmost level of this YAML file is a key representing type of hook # being run (e.g. pre-commit, commit-msg, etc.). Within each type you can # customize each hook, such as whether to only run it on certain files (via # `include`), whether to only display output if it fails (via `quiet`), etc. # # For a complete list of hooks, see: # https://github.com/sds/overcommit/tree/master/lib/overcommit/hook # # For a complete list of options that you can use to customize hooks, see: # https://github.com/sds/overcommit#configuration # # Uncomment the following lines to make the configuration take effect. PreCommit: RuboCop: enabled: true on_warn: fail # Treat all warnings as failures problem_on_unmodified_line: ignore # run RuboCop only on modified code
-
Automatically sorting your Tailwind CSS class names
Overcommit - run rustywind --write during git commit to update your files before you send them off to git
-
Migrating Tachyons to Tailwind CSS (III β learnings)
By the way, itβs nice that adding (or completely redefining) the scale system is so easy in Tailwind. On the other hand, care must be taken that modifying the defaults is not overused. In the end, we added an Overcommit rule banning further updates of the Tailwind configuration (of course, this can be temporarily disabled, when truly needed).
rubocop-rails
-
RuboCoping with legacy: Bring your Ruby code up to Standard
1) Auto-correcting a whole (large) codebase at once with tons of offenses and dozens of active branches should be used with caution. Merge conflicts, blame pollution (ok, can be solved with .git-blame-ignore-revs, though can hardly remember any project using it). Though, the most important argument is that auto-correct can introduce bugs. Unfortunately, even safe autocorrect can be unsafe. Recently, I broke one popular project (with a decent, but not 99.999% test coverage) with a single "safe" auto-correction commit π (This issue).
-
Linting and Auto-formatting Ruby Code With RuboCop
It's also possible to extend RuboCop through additional linters and formatters. You can build your own extensions or take advantage of existing ones if they are relevant to your project. For example, a Rails extension is available for the purpose of enforcing Rails best practices and coding conventions.
-
Technical leadership during large refactors
I'm still getting used to writing these. Still, this article from Evil Martians has been a big help. The rubocop-rails codebase also had some cops similar to what I wanted to put together. The cop we've put together checks if the class inherits from ActiveModel::Serializer and adds an offence to that line.
-
Future of Ruby β AST Tooling
Let's take a glance at the action_filter cop real quick here, but just a quick part of it:
-
Learning style?
Following on from this, I highly recommend setting up your editor to automatically lint Ruby files with RuboCop and its Rails extension and start adapting your code to adhere to the Ruby Style Guide.
- Rails 7 will introduce invert_where method, but it's dangerous
-
Learning Ruby: Things I Like, Things I Miss from Python
I just would like to point out that even though that is the most sane way, it comes with it owns set of problems. One of them is when developers start to code to cheat the linter, or they complicate the code just to "make the linter happy", another is when the linting rule introduces problems/errors like https://github.com/rubocop-hq/rubocop-rails/issues/418
What are some alternatives?
Rugged - ruby bindings to libgit2
Django - The Web framework for perfectionists with deadlines.
git-up - NOT MAINTAINED
coc-solargraph - Solargraph extension for coc.nvim
git-whence - Find the merge and pull request a commit came from + fuzzy search for cherry-picks
Strapi - π Strapi is the leading open-source headless CMS. Itβs 100% JavaScript/TypeScript, fully customizable and developer-first.
git-spelunk - git-spelunk, an interactive git history tool
rubocop-performance - An extension of RuboCop focused on code performance checks.
git-auto-bisect - Find the first broken commit without having to learn git bisect
standard - Ruby's bikeshed-proof linter and formatter π²
pre-commit - A framework for managing and maintaining multi-language pre-commit hooks.
gringotts - A complete payment library for Elixir and Phoenix Framework