🐡

VSCodeでRails開発環境を作る

2024/05/23に公開1

RubyMineではなくてVSCodeで開発したかったので手順をメモしておく。
前提として、これを利用してRailsはインストール済みとする。
https://github.com/ANTON072/rails7-boilerplate

gemの追加

group :development に以下を追加する。

gem "solargraph"

devcontainerの追加

VSCodeにコレを入れておく。
Dev Containers - Visual Studio Marketplace

./.devcontainer ディレクトリを新規作成して、devcontainer.jsonを追加する。

{
  "name": "Existing Docker Compose",
  "dockerComposeFile": [
    //2つ目のdocker-compose.ymlで1つ目の設定を上書きます
    "../docker-compose.yml",
    "docker-compose.yml"
  ],
  "service": "web", //docker-compse.ymlで記載されている起動対象のサービス名、Railsのサービスを指定します
  "workspaceFolder": "/app", //起動時に接続するディレクトリ
  "customizations": {
    "vscode": {
      "extensions": [
        "Shopify.ruby-lsp",
        "castwide.solargraph",
        "kaiwood.endwise",
        "craigmaslowski.erb"
      ],
      "settings": {
        "editor.tabSize": 2,
        "editor.formatOnSave": true,
        "editor.renderWhitespace": "none",
        "[ruby]": {
          "editor.defaultFormatter": "castwide.solargraph"
        },
        "files.associations":     { "*.erb": "erb"  },
        "emmet.includeLanguages": {   "erb": "html" },
        // Settings for Solargraph
        // https://github.com/castwide/solargraph
        "solargraph.useBundler":  false,
        "solargraph.diagnostics": false,
        "solargraph.formatting":  true,  // Use Ctrl+Shift+P->Format to format
        "solargraph.autoformat":  false,
        "solargraph.definitions": true,
        "solargraph.completion":  true,
        "solargraph.references":  true,
        "solargraph.symbols":     true,
        "solargraph.rename":      true,
        "solargraph.hover":       true,

        // Settings for Ruby LSP
        // https://github.com/Shopify/vscode-ruby-lsp
        "rubyLsp.formatter": "none",
        "rubyLsp.enabledFeatures": {
          "diagnostics": false,
          "formatting":  false
        }
      }
    }
  },
  "remoteUser": "root"
}

docker-compose.yml

services:
  web:
    # docker起動時にRailsが起動しないようにする
    command: /bin/sh -c "while sleep 1000; do :; done"

solargraphの設定ファイルを追加する

.solargraph.yml

---
include:
- "**/*.rb"
exclude:
- spec/**/*
- test/**/*
- vendor/**/*
- ".bundle/**/*"
require:
- actioncable
- actionmailer
- actionpack
- actionview
- activejob
- activemodel
- activerecord
- activestorage
- activesupport
domains: []
reporters:
- rubocop
- require_not_found
- typecheck
formatter:
  rubocop:
    cops: safe
    except: []
    only: []
    extra_args: []
require_paths: []
plugins: []
max_files: 5000

VSCodeでDockerを起動する

エディタの左隅にある、このアイコンをクリック。

コンテナーで再度開くを選択

Railsを起動してみる

ターミナルから rails s -b 0.0.0.0 を実行する。

localhost:3000 で起動が確認できた。

solargraphも動作しているっぽい。

Ruby LSPも動いているっぽい。

Discussion

Katsushi OUGIKatsushi OUGI

しばらく使ってみて開発体験がまったく良くないのでRubyMineに帰りました…。