【VSCode+Prettier】Railsのコードを自動フォーマットする
この記事では、Prettier for Rubyを使って、Railsのコードを自動フォーマットする方法を紹介します。
VSCodeでファイルを保存する際に自動フォーマットできるようになります。
1. 検証環境
- Ruby:3.1.0
- Rails:6.1.4.7
- node:16.13.0
- yarn:1.22.19
- bundler:2.3.6
- VSCode:1.78.2
- prettier:2.8.8
- @prettier/plugin-ruby:3.2.2
2. 設定手順
2-1. @prettier/plugin-rubyのインストール
以下のコマンドを実行して、prettier
と@prettier/plugin-ruby
をインストールします。
$ yarn add --dev prettier @prettier/plugin-ruby
2-2. gemのインストール
次に、必要なgemをインストールします。
Gemfile
に以下を追記。
group :development do gem 'prettier_print' gem 'syntax_tree' gem 'syntax_tree-haml' gem 'syntax_tree-rbs' end
以下のコマンドを実行して、gemをインストール。
$ bundle install
2-3. prettier-vscodeのインストール
VSCodeの拡張機能にprettier-vscodeを追加します。
VSCodeを開く→ ⇧⌘X
→prettier
で検索
settings.json
に以下を追記。
{ "[ruby]": { "editor.defaultFormatter": "esbenp.prettier-vscode", "editor.formatOnSave": true }, }
settings.json
の開き方⇧⌘P
でコマンドパレットを開くopen settings
で検索Preferences: Open User Settings (JSON)
を選択
2-4. rubocopと一緒に使う場合
.rubocop.yml
に以下を追記。
inherit_from: - node_modules/@prettier/plugin-ruby/rubocop.yml
こうすることでRubocopとPrettierのルールが衝突しなくなります。
以上で設定は終了です。
3. フォーマット結果
以下のapp/models/user.rb
をVSCode上で⌘S
で保存すると、
# frozen_string_literal: true class User < ApplicationRecord validates :password, length: { minimum: 4 }, confirmation: true, if: :password_required? end
こうなる↓
# frozen_string_literal: true class User < ApplicationRecord validates :password, length: { minimum: 4 }, confirmation: true, if: :password_required? end
【参考】