VSCodeでRails開発環境を整える
VSCodeでRails開発するまでのメモ。
基本的な言語機能のセットアップ
VSCodeのRuby拡張機能であるRubyとVSCode Rubyを入れます。
FormatterおよびLinterとして使用するGemをインストール。
ここではFormatterとLinterにrubocop
を選んでます。
(その他使用可能なツールはFormatting、Lintingを参照)
gem install rubocop
VSCodeのワークスペースを以下のように設定します。
{
// 基本的な言語機能のサポート
"ruby.useLanguageServer": true,
// Formatで使用するツールを`bundle exec`で実行するかどうか
// ここではグローバルにインストールしたGemを使うのでfalseに指定
"ruby.useBundler": false,
// `Format Document`で使用するフォーマッターにrubocopを指定
"ruby.format": "rubocop",
// Linterにrubocopを指定
"ruby.lint": {
"rubocop": {
"useBundler": false
}
},
}
VSCodeを起動している場合は再起動します。
ここまでで、以下のようにLinterが動作すればok。
またCmd + Shift + P
でコマンドパレットからFormat Document
を実行すると、フォーマットが実行されます。
(ちょっと遅い、、)
インテリセンスを追加する
Solargraphをインストールします。
gem install solargraph
VSCode拡張Ruby Solargraphをインストールします。
これによってGo to Definition
やPeek
が出来るようになります。
また一部オートコンプリートやインラインドキュメント(ホバーしたときにチップ表示されるやつ)が使用できるようになります。
デバッグ環境のセットアップ
VSCode上でブレークポイントを貼ってデバッグできるようにしていきます。
ローカルでRailsサーバーを起動している場合
ruby-debug-ideをインストールします。
gem install ruby-debug-ide debase
通常のbin/rails s
の代わりに以下のコマンドを実行します。
rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 1234 -- bin/rails s
これでデバッガーが待機状態になるので、VSCode側からデバッグセッションを実行します。
プロジェクトのルートに.vscode/launch.json
を作成して、以下の内容を記述します。
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for rdebug-ide",
"type": "Ruby",
"request": "attach",
"remoteHost": "127.0.0.1",
"remotePort": "1234",
"remoteWorkspaceRoot": "${workspaceRoot}"
}
]
}
Cmd + Shift + P
でコマンドパレットを開き、Debug: Start Debugging
を実行します。
正しく繋がれば、Railsサーバーが起動し、VSCodeのデバッグセッションが開始されます。
Dockerで起動している場合
Gemfileに同じくruby-debug-ideを記述しインストールしておきます。
...
group :development, :test do
+ gem 'ruby-debug-ide'
+ gem "debase"
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end
docker-compose.ymlで実行するコマンドを以下のように変更します。
command: bundle exec rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 26162 -- bin/rails s -p 3000 -b 0.0.0.0
volumes:
- .:/sample_rails_app
ports:
- "1234:1234"
- "3000:3000"
- "26162:26162"
Dockerfileでもデバッグで使用するポート(1234と26162)を公開しておきます。
EXPOSE 3000 1234 26162
この状態でdocker-compose up
すると、デバッガーが待機状態になるので、VSCode側からデバッグセッションを実行します。
プロジェクトのルートに.vscode/launch.json
を作成して、以下の内容を記述します。
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for rdebug-ide",
"type": "Ruby",
"request": "attach",
"cwd": "${workspaceRoot}",
// ボリューム先に合わせて適宜変更してください
"remoteWorkspaceRoot": "/sample_rails_app",
"remoteHost": "0.0.0.0",
"remotePort": "1234"
}
]
}
Cmd + Shift + P
でコマンドパレットを開き、Debug: Start Debugging
を実行します。
正しく繋がれば、Railsサーバーが起動し、VSCodeのデバッグセッションが開始されます。
Discussion