- en: Ruby format
- jp: ルビーフォーマット
- I (fables-tales) am no longer working in spare time on open source
- Folks who have commit bits are free to merge anything they'd like as long as it passes CI
- I review important patches for my day job at request of a co-worker
The blessed strategy is:
we are actively working on moving Rubyfmt to prism
We intend to do this via replacing ripper_tree_types with a prism_tree_types. This implies modifying all our formatters. We hope to keep tokens and the render queue the same.
On Mac and Linux, rubyfmt can be installed with Homebrew:
brew install rubyfmt- Make sure you've got cargo installed
- Run
make all - Copy target/release/rubyfmt-main to somewhere on your path as
rubyfmt
Rubyfmt supports the following CLI invocations:
<whatever> | rubyfmtpipe from standard inrubyfmt -i -- files or directoriesto format files and directories in placerubyfmt -- files or directoriesoutput rubyfmtted code to STDOUT.rubyfmt -c -- files or directoriesoutput a diff of input and rubyformatted input.rubyfmt --header-opt-in -- files or directoriesto format files only with a# rubyfmt: truecomment at the top of the filerubyfmt --header-opt-out -- files or directoriesto skip formatting files with a# rubyfmt: falsecomment at the top of the file
rubyfmt also supports ignoring files with a .rubyfmtignore file when present in the root of the working directory.
.rubyfmtignore uses the same syntax as .gitignore, so you can choose to ignore whole directories or use globs as needed.
By default, rubyfmt also ignores files in .gitignore during file traversal, but you can force these files to be formatted by using the --include-gitignored flag.
We aren't currently tested with any vim plugin managers, however, adding the plugin from a git clone is fairly easy:
- Run
cargo build --release - Add
source /path/to/rubyfmt.vimto your~/.vimrc(e.g. my dotfiles please note, this line is commented) - Add
let g:rubyfmt_path = /path/to/target/release/rubyfmt-mainbeneath the source line
If you use the popular null-ls LSP plugin to manage formatters, it supports rubyfmt out of the box. You can add the formatter to your existing setup() configuration:
local null_ls = require("null-ls")
null_ls.setup({
sources = {
+ null_ls.builtins.formatting.rubyfmt,
},
})Read more in the null-ls documentation.
Rubyfmt is a supported formatter in the popular
vscode ruby extension.
You should copy rubyfmt-main to be called rubyfmt on your PATH .
Once installed, add the following to vscode's settings.json file:
"ruby.useLanguageServer": true,
"ruby.format": "rubyfmt",
"[ruby]": {
"editor.formatOnSave": true
},Install the File Watchers plugin and go to File | Settings | Tools | File Watchers. Now import watchers.xml from editor_plugins/rubymine/. Optionally set Level to Global to have it available across all projects.
See this reference on using file watchers to learn more.
Install the rubyfmt plugin from Package Control: Install Package -> rubyfmt.
Ruby files are formatted on save or by pressing Alt + ; or on macOS: Cmd + ;. rubyfmt is assumed to be on path.
Overridable default settings:
{
"ruby_executable": "ruby",
"rubyfmt_executable": "rubyfmt",
"format_on_save": true,
}Install the rubyfmt package from Settings > Packages.
Ruby files are formatted on save or by pressing Alt + ; or on macOS: Cmd + ; rubyfmt is assumed to be on path. See the package settings for more options.
Please checkout our contributing guide