🙌

ローカル環境に Ruby すら入れたくない!そんなあなたに “rails-new” で爆速開発環境構築

2025/02/03に公開

Rails の開発環境を整える際、「なるべく手元の環境を汚したくない」 と思うことはありませんか?
そんな方にピッタリなのが、rails-new を使った開発環境構築です。
今回は VSCode の DevContainer と連携して 簡単&爆速 で開発を始められる方法をご紹介します。


rails-new とは?

rails-new は、Docker + DevContainer を使って Rails アプリを作成 できるコマンドラインツールです。
以下のような特徴があります。

  • ローカル環境に Ruby をインストールする必要がない
    すべてコンテナ内で完結するので、ローカルを汚しません。
  • コマンドひとつで Rails プロジェクトとコンテナ構成を用意できる
    rails-new のオプションを指定して実行するだけで、Docker や VSCode DevContainer 用の設定ファイルが生成されます。
  • Rails 標準コマンドと同様のオプション指定が可能
    例:rails-new <アプリ名> -d postgresql --api --devcontainer

rails-new のインストール方法

まずはローカル環境に rails-new コマンドをインストールして使えるようにします。
インストールと言っても、実行ファイルを設置するだけです。

  1. rails-new リリースページ から、最新バイナリ(例:rails-new-x86_64-unknown-linux-gnu.tar.gz)をダウンロード
  2. 解凍
    tar -zxvf rails-new-x86_64-unknown-linux-gnu.tar.gz
    
  3. rails-new ファイルをパスの通ったディレクトリ(例:/usr/local/bin など)にコピー

これで rails-new コマンドが使えるようになります。
試しにターミナルで以下を入力してみましょう。

rails-new rail-help

これにより、rails new --help の内容が表示されればインストール完了です。


rails-new で開発環境を作ってみる

ここでは以下のような条件でプロジェクトを作成してみます。

  • プロジェクト名:store_api
  • データベース:PostgreSQL
  • Rails を API モードで立ち上げる(--api
  • VSCode の DevContainer 用設定を作成(--devcontainer

下記のコマンドを実行します。

rails-new store_api -d postgresql --api --devcontainer

これで、store_api ディレクトリが作成され、Rails アプリと DevContainer 向け設定ファイルが自動生成されます。


VSCode でプロジェクトを開く

続いて、VSCode で store_api ディレクトリを開きます。
VSCode には Dev Containers拡張機能 をインストールしておくと、
devcontainer.json.devcontainer ディレクトリを検出して、DevContainerを立ち上げてくれます。

.devcontainer/devcontainer.json の中身

生成された devcontainer.json を開くと、以下のような設定が含まれています。

{
  "dockerComposeFile": "compose.yaml",
  // ...
  "features": {
    "ghcr.io/devcontainers/features/github-cli:1": {},
    "ghcr.io/rails/devcontainer/features/activestorage": {},
    "ghcr.io/devcontainers/features/docker-outside-of-docker:1": {},
    "ghcr.io/rails/devcontainer/features/postgres-client": {}
  },
  // ...
  "postCreateCommand": "bin/setup --skip-server"
}

dockerComposeFile

"dockerComposeFile": "compose.yaml" と記載されているように、Rails アプリと PostgreSQL が設定された compose.yaml.devcontainer ディレクトリに置かれています。
-d postgresql を指定したことで、あらかじめ PostgreSQL コンテナが組み込まれています。

features

"features" は、VSCode DevContainer で用意されている拡張機能を簡単に導入できる仕組みです。
ここでは下記のような機能があらかじめインストールされる設定になっています。

  • GitHub CLI (ghcr.io/devcontainers/features/github-cli:1)
    コンテナ内で gh コマンドが使えるようになり、GitHub とのやり取り(PR 作成や Issues 管理など)が簡単に行えます。
  • activestorage (ghcr.io/rails/devcontainer/features/activestorage)
    Rails の Active Storage を利用する際に必要なライブラリ・設定が整備されます。
  • docker-outside-of-docker (ghcr.io/devcontainers/features/docker-outside-of-docker:1)
    DevContainer 内部からホストの Docker デーモンを利用し、起動中の別コンテナに入ることなどが可能です。
    例:
    docker compose -f .devcontainer/compose.yaml exec postgres bash
    
    と実行することで、同じ Docker デーモン上で動作している postgres コンテナに直接入れます。
  • postgres-client (ghcr.io/rails/devcontainer/features/postgres-client)
    PostgreSQL への接続を行うための psql コマンドが使えるようになります。

postCreateCommand

"postCreateCommand": "bin/setup --skip-server" は、コンテナが初回起動する際に bin/setup スクリプトを実行して、
アプリケーションの初期セットアップを自動で行うための設定です。
--skip-server オプションにより、サーバー自体は起動されません。


実際にアプリを起動してみる

VSCode がコンテナを立ち上げてくれたら、コンテナ内のターミナルでサーバーを起動します。

bin/dev

ブラウザで http://localhost:3000 にアクセスしてみましょう。Rails アプリに接続できていれば成功です。


まとめ

  • rails-new を使えば、ローカル環境を汚さずに Docker + DevContainer で Rails 環境 を構築できます。
  • PostgreSQLGitHub CLIdocker-outside-of-docker など、便利な機能が最初から揃っています。
  • VSCode の DevContainer に対応しているため、ワンクリックでコンテナ環境を起動 できて簡単&快適。
  • アプリの起動は bin/dev で行い、ローカル環境を汚さずに Rails を素早く立ち上げられます。

「Ruby をローカルにインストールするのも抵抗がある!」という“過激派”な方も、
「気軽に新しい Rails アプリを試したい」「チーム開発で統一環境を簡単に用意したい」という方にもオススメです。
ぜひ一度試してみてください!

あしたのチーム Tech Blog

Discussion