【Rails7】アプリの新規作成からGitでのコミット、本番環境(Heroku)へのデプロイまでの一連の流れ

テスト用のアプリを作成したりデプロイしたりする度に、手順を忘れてメモを見返したり、

ついうっかりコマンドを実行し忘れてしまうことが多々ある今日この頃w

今後また1からアプリを立ち上げてデプロイする時のためにも、一連の流れをブログとして書き残しておこう!

ということで本記事を書くことにしました。

目次

開発環境

  • Ruby 3.1.2
  • Ruby on Rails 7.0.3
  • M1 Macbook Air 2020
  • mac OS Monterey (ver. 12.4)
  • ターミナル bash (Rosetta 2 使用)

アプリを作成する

今回はデプロイまでの一連の流れを見るだけなので、作成するアプリはワンクリック、ならぬワンコマンドでできる至って簡単なものとします。

まずは、$ rails newでアプリを作成します。

アプリを作成したら、作成したアプリのディレクトリに移動しておきましょう。

$ rails scafford でアプリの雛形を作る

アプリのディレクトリ内で下記コマンドを実行し、アプリの雛形とデータベースを作成します。

$ rails g scaffold Post title:string body:text
$ rails db:create
$ rails db:migrate

$ rails sでサーバーを立ち上げ、”http://localhost:3000/posts/new“に接続すると、すでにpostsの投稿用の雛形ができています。

とりあえず、何も装飾せずにこのままデプロイしていきます。

ルーティングを設定する

このままルートURL(http://localhost:3000)に接続するとRailsのスタートアップ画面が表示されてしまうので、

config/routes.rbにルートURLに表示したいページを設定しておきます。

root "posts#index" #この行を追加
resources :posts

本番環境のデータベース設定を行う

Railsのデータベースはデフォルトで”sqlite3″になっているので、Gemfileを以下のように書き換えておきます。

group :development, :test do
 #上の方に書いてある"sqlite3"を消して、ここに記述する
  gem "sqlite3", "~> 1.4"
  gem "debug", platforms: %i[ mri mingw x64_mingw ]
end

#-------追加---------
group :production do
  gem "pg"
end
#-------------------

Gemfileを変更したら、以下のコマンドを実行しておきます。

$ bundle install --without production

続いて、config/database.ymlproduction:の箇所を以下のように変更しておきます。

production:
  <<: *default
  adapter: postgresql
  encoding: unicode
  pool: 5

本番環境のWebサーバーの設定を行なう

本番環境(Heroku)ではWebサーバーにPumaを利用したいので、config/puma.rbに下記の内容を記述しておきます。

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5)
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

on_worker_boot do
  # Worker specific setup for Rails 4.1+
  # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
  ActiveRecord::Base.establish_connection
end

さらに、アプリのディレクトリ直下にProcfileファイルを新規作成し、下記の内容を記述しておきます。

web: bundle exec puma -C config/puma.rb

WebサーバーにPumaを利用する理由は以下の記事にて述べています。

あわせて読みたい
【Rails7】本番環境(Heroku)のWebサーバーをPumaに置き換える RailsにはデフォルトでWEBrickというWebサーバが付属しているのだが、 どうやらこのWEBrickというサーバーは本番環境(Heroku)での実行には適していないらしい。 そこで...

設定は以上です。

GitおよびGitHubの登録とリポジトリの作成

まずはGitの登録とGit Hubのアカウント作成を済ませましょう。

各登録方法は以下の記事がとても参考になります。

【超入門】初心者のためのGitとGitHubの使い方

登録を終えたらリポジトリの作成といきましょう。

ローカルリポジトリの作成

アプリのディレクトリ内で下記コマンドを実行し、ローカルリポジトリを作成します。

$ git init

続いて、ファイルをインデックスに追加します。

$ git add .

インデックスの内容をローカルリポジトリにコミットします。

$ git commit -m "コミットメッセージ"

続いてはリモートリポジトリの作成といきましょう。

リモートリポジトリの作成

GitHubにログインし、トップページにある「Create a new repository」ボタンからリモートリポジトリを作成します。

(画面右上の「+」アイコンメニューの『New repository』からも作成できます)

リポジトリを作成すると以下の画面が表示されます。

表示されたリモートリポジトリのURLをコピーしておき、以下のコマンドを実行してリモートリポジトリとローカルリポジトリを接続します。

$ git remote add origin リモートリポジトリのURL

ローカルにリモートリポジトリが追加されているかどうかは以下のコマンドで確認できます。

$ git remote -v

リモートリポジトリの接続が完了したら、以下のコマンドを実行してリモートリポジトリにコードをプッシュしておきましょう。

$ git branch -M main
$ git push -u origin main # 2回目からは(-u origin main)の部分は不要

Herokuへデプロイする

まずはHerokuのアカウントを作成しておきます。

また、Herokuアプリをターミナル上から作成、管理するために、Heroku CLIを開発環境にインストールしておきます。

Heroku CLI のインストール

$ heroku --versionでHerokuのバージョンが表示されたらインストール成功です。

Herokuにログインしてアプリを作成する

続いて、Herokuにデプロイしたいアプリのディレクトリに移動し、Herokuにログインします。

$ heroku login

上記のコマンドを入力すると、Webブラウザが立ち上がりHerokuログイン用のボタンが表示されるので、「Log in」ボタンを押してログインします。

続いて、以下のコマンドでheroku上にアプリを作成します(現時点ではまだ空のアプリ)。

$ heroku create 好きなアプリ名

createの後に好きなアプリ名を指定することができます。

ただ、heroku上でアプリ名を指定する場合、メールアドレスのように唯一無二のユニークな名前である必要があります。

もし、他で使われている名前だった場合は、

$ heroku create sample-app
Creating ⬢ sample-app... !
 ▸    Name sample-app is already taken

といった表示が出ます。

$ heroku createのみを実行した場合、アプリ名はランダムに決められます。

ちなみに、アプリ名を後から変更する場合は、

$ heroku rename 変更後のアプリ名

と入力すれば変更できます。

適切なプラットフォームを追加する(macOS で Linux 環境を使用している場合など)

M1 Macで、Rosetta2使用のターミナルを用いてデプロイしようとするとエラーが出てデプロイできないことがあります。

【Rails】Bundler 2.2.x以降は開発者が適切なプラットフォームを追加する必要がある

そのため、僕のようにM1 MacでRosetta2利用の場合は、デプロイする前に以下のコマンドを実行して適切なプラットフォームを追加しておきましょう。

(できれば、Gitでコミットする前に実行しておきたい)

$ bundle lock --add-platform x86_64-linux

Gitに変更をコミットしていない場合はコミットしておく

内容に変更があった場合、その都度Gitに変更をコミットする必要があります。

コミットがまだの場合は、デプロイ前に済ませておきましょう。

$ git add .
$ git commit -m "コミットメッセージ"

デプロイする

いよいよデプロイのお時間です。

下記コマンドを実行し、アプリをHerokuにデプロイしましょう。

$ git push heroku main

何もエラーが出なければデプロイ成功です。

デプロイが終わったら、以下のコマンドを実行しHerokuアプリのデータベースを作成します。

$ heroku run rails db:migrate

これでアプリが使える状態になりました。

最後に、以下のコマンドでデプロイしたアプリを開いてみましょう。

$ heroku open

ローカルの開発環境と同様に動作すれば成功です。

ちなみに、Heroku上のデータベースでRailsのコンソールを使いたい場合は、

$ heroku run rails console

と入力すればコンソールが起動します。

デプロイしたアプリを更新する場合

Gitにコミットしてからデプロイします。

$ git add ファイル名
$ git commit -m "コミットメッセージ"
$ git push heroku main

データベースのテーブルなどを変更した場合は、マイグレーションも忘れずに行いましょう。

$ heroku run rails db:migrate

以上です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

愛知の34歳。無職で暇になり始めたプログラミング(Ruby on Rails)の忘備録をまとめたブログです。最近は別にやりたいことができたのでプログラミングほぼやっていません。気が向いたらまた再開するかも。僕の日常はメインブログの方で更新しています。

コメント

コメントする

目次