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?

【初心者向け】RailsアプリをRenderでデプロイする手順(mac)

Posted at

背景

今回はRailsアプリを作ってデプロイする上で、
2024年7月時点において最も簡単かつモダンにデプロイする手順についてです:sunglasses:

当方、駆け出しエンジニアですがrailsデプロイに苦しんだため、
同じくデプロイで苦しんでおられる方の一助となればと思います:grinning:

webアプリは有料プラン(starter:月$7~)でないと動作が不安定なのでご注意ください。Freeプランだとエラーが出る場合があります。Freeで失敗したら有料プランの移行を検討してください:hushed:
データベースは90日まで無料で運用できますが、90日でデータベースは削除されるので継続運用される場合は有料プラン(starter:月$7~)に移行をお願いします:bow:

手順

大きく以下の流れで進行します。

1.PC上のアプリ内準備
2.Railsアプリのデプロイ
3.データベースのデプロイ
4.Railsアプリとデータベース接続

PC上のアプリ内での準備

Gemfileの編集

以下のような変更を加えてください。

Gemfile
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '3.0.3'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails', branch: 'main'
gem 'rails', '~> 6.1.4', '>= 6.1.4.1'
# Use sqlite3 as the database for Active Record

- # gem 'sqlite3', '~> 1.4'

# ~~~割愛~~~


group :development, :test do
+  gem 'sqlite3', '~> 1.4'
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end


group :test do
  # Adds support for Capybara system testing and selenium driver
  gem 'capybara', '>= 3.26'
  gem 'selenium-webdriver'
  # Easy installation and use of web drivers to run system tests with browsers
  gem 'webdrivers'
end

+group :production do
+  gem "pg", "~> 1.4"
+end

# ~~~割愛~~~

Gem追加後は以下のコマンドを実行しておきましょう。

ターミナル
 bundle install --without production

database.ymlの編集

production環境で接続するDBの変更を行います。

変更前

config/database.yml
 production:
  <<: *default
  database: db/test.sqlite3

変更後

config/database.yml
production:
  <<: *default
  adapter: postgresql
  encoding: unicode
  pool: 5

Railsアプリのデプロイ

ここでは、Railsのアプリ部分のデプロイです。
RailsなどのWebサイトとデータベースが一体化しているアプリは
それぞれデプロイする必要があるため片方ずつ行います。

アカウント登録

まずはRenderのアカウント登録をします。
トップページのGet Started for Freeからアカウント登録しましょう。
アカウントはGithubアカウントで作成しましょう。

※GitHubのアカウント・レポジトリをお持ちでない方は、
下記の記事を参考に作成してください。

※GitHubでの作業

1.アカウント作成
2.GitHub上でレポジトリ(アプリ)の作成
3.PC上のアプリとGitHubのアプリの紐付け
4.GitHubにアップロード

Webサービスのデプロイ

1.ログイン後、Renderダッシュボードの右上にある「New+」ボタンをクリックし、
「Web Service」を選択します。
6874747073.png

2.Gitリポジトリを選択し、デプロイ先のブランチを指定します。
3.名前(my-rails-appなど)とリージョンを指定します。

Webサービスの設定

基本情報

Name: サービス名
Environment: Ruby
Region: シンガポール
Branch: デプロイしたいブランチ。mainmaster
plan:starter(月$7)

各種詳細設定

Start Command:

bundle exec rails s -p 10000

Build Command:

bundle install && bundle exec rake assets:precompile db:migrate

Advanced
ここでは、環境変数の設定を行います。
RAILS_MASTER_KEYを設定します。このキーはconfig/master.keyに保存されています。
68747470733.png

もし、マスターキーがない方orエラーが出た方は以下のコマンドを実行しましょう。

ターミナル
# Railsプロジェクトの階層で実行, ファイルを削除するコマンド
rm config/credentials.yml.enc config/master.key
# マスターキー生成コマンド
EDITOR="code -w" bin/rails credentials:edit

Githubにアップロード
ここまでの変更を行なった後は、GitHubにアップロードしましょう。

最後に、Create Web Serviceを押してWebサービスをデプロイします。
ここまででアプリサービスは作成作業完了です。

データベースのデプロイ

Renderダッシュボードの右上にある「New+」ボタンをクリックし、
「PostgreSQL」を選択します。

データベースの設定

基本情報

Name: アプリ名_DB
Region: シンガポール
Plan:はFree

残りはスルーでCreate Databaseを押しましょう。
作成完了まで少し(2~5分程度)時間がかかります。

Railsアプリとデータベースの接続

Webサービスでの環境変数の設定

作成したデータベースのInfoにあるInternal Database URLをコピーしましょう。
スクリーンショット 2024-07-14 11.55.14.png

次に、WebサービスのEnvironmentsに移動し
DATABASE_URLKeyに、コピーしたURLをValueに入れて、Save Changesを押しましょう。
スクリーンショット 2024-07-14 12.01.12.png

render.yamlの作成

render.yamlをGemfileと同じ階層(=アプリ直下)に作成し、以下の内容を設定しましょう。

render.yaml
databases:
  - name: Renderで作成したDBアプリ名
    databaseName: Info内のConnectionsにあるDatabase」を入れる
    user: Renderで作成したRailsのアプリ名
    region: singapore

services:
  - type: web
    name: Renderで作成したRailsのアプリ名
    env: ruby
    region: singapore
    plan: free
    buildCommand: "./bin/render-build.sh"
    startCommand: "bundle exec puma -C config/puma.rb"
    envVars:
      - key: DATABASE_URL
        fromDatabase:
          name: Renderで作成したDBアプリ名
          property: connectionString
      - key: RAILS_MASTER_KEY
        sync: false

環境設定ファイルの設定

環境設定ファイル(config/database.yml)がPostgreSQLを使用するように設定します。
productionセクションは以下のようになります。

yaml
production:
  <<: *default
  database: my_app_production
  username: <%= ENV['DATABASE_USERNAME'] %>
  password: <%= ENV['DATABASE_PASSWORD'] %>
  host: <%= ENV['DATABASE_HOST'] %>
  port: <%= ENV['DATABASE_PORT'] %>

Githubにアップロード
ここまで変更を行なった後は、Githubにアップロードしましょう。

環境変数の設定

データベース接続に必要な環境変数
DATABASE_HOST,
DATABASE_PASSWORD,
DATABASE_PORT,
DATABASE_URL,
DATABASE_USERNAME
これらがWebサービスのEnvironmentsで正しく設定されているか確認します。
スクリーンショット 2024-07-14 14.12.56.png

データベースの移行を実行する

以下のコマンドを使用して、WebサービスのShellでマイグレーションを実行してください。

bash
bundle exec rails db:migrate

ログの確認

ここまで完了したら、Dashboard > アプリ名 > Eventsの順で移動し
最新のdeploy明るい緑色)のURLをクリックして確認しましょう。
こんな感じになっていたらリリース成功です。
6874747073.png

デプロイ成功確認のため、少し左上にあるURLをクリックしてみましょう。

Webページの表示まで3〜5分程度かかることがあります。

表示確認できれば、デプロイ完了です:raised_hands:

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?