ローカル環境に Ruby すら入れたくない!そんなあなたに “rails-new” で爆速開発環境構築
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
コマンドをインストールして使えるようにします。
インストールと言っても、実行ファイルを設置するだけです。
-
rails-new リリースページ から、最新バイナリ(例:
rails-new-x86_64-unknown-linux-gnu.tar.gz
)をダウンロード - 解凍
tar -zxvf rails-new-x86_64-unknown-linux-gnu.tar.gz
-
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 デーモン上で動作しているdocker compose -f .devcontainer/compose.yaml exec postgres bash
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 環境 を構築できます。
- PostgreSQL や GitHub CLI、docker-outside-of-docker など、便利な機能が最初から揃っています。
- VSCode の DevContainer に対応しているため、ワンクリックでコンテナ環境を起動 できて簡単&快適。
- アプリの起動は
bin/dev
で行い、ローカル環境を汚さずに Rails を素早く立ち上げられます。
「Ruby をローカルにインストールするのも抵抗がある!」という“過激派”な方も、
「気軽に新しい Rails アプリを試したい」「チーム開発で統一環境を簡単に用意したい」という方にもオススメです。
ぜひ一度試してみてください!
Discussion