0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

mofmofAdvent Calendar 2024

Day 16

rails-new App と Dev Containers を使って Rails8 の開発・本番環境をサクッと構築する

Last updated at Posted at 2024-12-16

はじめに

Rails 8.0 を色々と触って試そうと、開発環境の構築からデプロイまでを行うことしたのですが、rails-new App や Dev Containersを使ってサクッと構築することができそうだったので手順をまとめました。

できること

  • Dev Containers を使った Rails 8.0 の開発環境の構築
  • Docker での Render.com への自動デプロイ

用意するもの

  • Docker
  • VS Code (Visual Studio Code)
  • VS Code の Dev Containers Extension
  • rails-new app
  • GitHub のリポジトリ
  • Render.com のアカウント

1. rails-new App を使った Rails 8 アプリケーションの作成

rails-new を使うと Docker を用いてローカルの Ruby 環境の影響を受けずに環境を構築できます。

README のインストール手順を参考にインストールします。

プロジェクトの作成

今回はDBに PostgreSQL を使用するのでオプションに指定して実行します。

rails-new --ruby-version 3.3.6 --rails-version 8.0.0 --devcontainer --database=postgresql app-name

作成されたプロジェクトを VS Code で開くと、 Dev Container でプロジェクトを開くためのダイアログが表示されるので実行します。

コンテナ内のターミナルで Rails の状態を確認します。(以降の操作は全てコンテナ内のターミナルで行います。)

$ rails --version
Rails 8.0.0

開発サーバーの起動

bin/dev で開発サーバーを起動できます。

$ bin/dev
=> Booting Puma
=> Rails 8.0.0 application starting in development 
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 6.5.0 ("Sky's Version")
* Ruby version: ruby 3.3.6 (2024-11-05 revision 75015d4c1f) +YJIT [aarch64-linux]
*  Min threads: 3
*  Max threads: 3
*  Environment: development
*          PID: 32917
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop

これで開発環境が作成されました。

(Option) Scaffold

適当なモデルを Scaffold で作成しておきます。

$ rails g scaffold Post title:string
$ rails db:migrate

確認用にルートも変更しておきます。

config/routes.rb

Rails.application.routes.draw do
  resources :posts
  # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html

  # Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500.
  # Can be used by load balancers and uptime monitors to verify that the app is live.
  get "up" => "rails/health#show", as: :rails_health_check

  # Render dynamic PWA files from app/views/pwa/* (remember to link manifest in application.html.erb)
  # get "manifest" => "rails/pwa#manifest", as: :pwa_manifest
  # get "service-worker" => "rails/pwa#service_worker", as: :pwa_service_worker

  # Defines the root path route ("/")
  root "posts#index"
end

開発環境で動作確認

image.png

これで Rails アプリケーション側は準備完了です。
GitHub リポジトリにプッシュしておきます。

$ git remote add origin git@github.com:user-name/app-name.git
$ git push origin main

2. Render.com へのデプロイ

PostgreSQL DB の作成

  • Database, User は config/database.yml の内容と合わせておく
  • Region は Asia だと現状は Singapore しか選択肢が無い

設定内容

Name: any name
Project: any
Database: app_name_production
User: app_name
Region: Singapore
PostgreSQL Version: 16
Plan Options Instance Type: Free

web service の作成

GitHub リポジトリとの連携が必要です。

設定内容

Source Code: rails app repository
Name: rails app name
Project: any
Language: Docker
Branch: main
Region: Singapore
Instance Type: Free
Environment Variables:
  WEB_CONCURRENCY: 2
  RAILS_MASTER_KEY: `config/master.key` の値
  DB_HOST: 作成済みのPostgreSQL DB の Info -> Connections -> Hostname の値
  APP_NAME_DATABASE_PASSWORD: 作成済みのPostgreSQL DB の Info -> Connections -> Password の値

Deploy Web Service を実行するとデプロイが開始されます。

デプロイが完了したら動作確認して終了です。お疲れ様でした。

まとめ

rails-new によってローカル環境の Ruby, Rails が不要になったのは手軽に環境が構築できていいですね。
Rails on Docker の開発環境が短時間で作れるので、Docker デプロイに対応した PaaS と併用して、サクッと作ったものを公開するのにも丁度に良さそうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?