RailsアプリをHerokuを使って無料で公開する方法

Railsアプリを作ったはいいものの、それを人に見せる方法がわからない時、無料で公開する方法があります。

Herokuを使う方法です。

Herokuとは、いわゆるPaaS(Platform as a Service)、Webアプリケーションの構築から保守、スケールの拡張などの運用作業までができるクラウドサービス

Herokuを使えば、rails cコマンドもheroku run rails cコマンドで行え、rails db:migrateはheroku run rails db:migrateで行うことができます。

それではWEBアプリをHerokuを使って無料で公開した方法を解説していきます。

参考文献

❯ sw_vers
ProductName:	macOS
ProductVersion:	11.2.3
BuildVersion:	20D91

❯ rails -v
Rails 6.1.3.2

Railsアプリ作成

まだRailsアプリを作ってない場合は以下のようにつくります

rails new アプリ名
bundle install

適当にコントローラを作成し

rails g controller コントローラ名 アクション名

config/routes.rbでトップページのルーティングを書いておきます

get "/" => "コントローラ名#アクション名"

gitにpush

homebrewがインストールされていない場合は以下のコマンドを実行してインストール

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

git がインストールされていない場合、以下のコマンドでインストール

brew update
brew install git

まだgitのリポジトリがない場合は、githubから作成

アプリ名がカレントディレクトリになるようにして、以下のコマンドをターミナルで実行

cd アプリ名
rm -rf .git
git init
git add .
git commit -m "first commit"
git remote add origin [gitのリポジトリURL]
git push origin main

RailsアプリをHeroku用に変更

herokuにローカルPC上のアプリをプッシュするには、設定を変更する必要があります。以下のような手順で設定変更を行います。

Gemfileを以下のように変更または追記

group :development, :test do
  gem 'sqlite3' #もし既にsqlit3について書いてある場合は、既に書かれてある方を消す
end

group :production do
  gem 'pg'
end

次にconfig/database.ymlを変更します

以下のように変更

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

次はconfig/environments/production.rbを変更します

#デフォルトでfalseとなっている以下の箇所をtrueに変更
  config.assets.compile = true

以下コマンドを実行

bundle install --without production

Herokuの導入

以下コマンドをターミナルで実行してHerokuを導入します

curl https://cli-assets.heroku.com/install.sh | sh

バージョンを確認します。

heroku -v

バージョンが表示されたらインストールは完了です。

Herokuへのpush

まずgitアカウントにプッシュしておいてください。

herokuへのプッシュをしていきます。

カレントディレクトリをアプリ名のディレクトリにして、コマンドラインに以下の手順で行ってください

以下のコマンドでWEBページが勝手に開かれるのでログインします。アカウントがない場合は作成すればログインできます。

heroku login  

次にheroku上にアプリを作成します。アプリ名は他に同じものがある場合はできません

heroku create アプリ名

herokuにプッシュしていきます。

git add .
git commit -m "test"
git push heroku main

メッセージの最後に以下のように表示されていれば公開できています。

remote: -----> Launching...
remote:        Released v6
remote:        https://アプリ名.herokuapp.com/ deployed to Heroku
remote: 
remote: Verifying deploy... done.
To https://git.heroku.com/アプリ名.g

上のメッセージの、https://アプリ名.herokuapp.com/をブラウザで開けば、作成したアプリが開かれます。

git push heroku mainでエラーが起こったら

git push heroku mainで Failed to install gems via Bundler.というエラーメッセージが表示されている場合、以下のように修正できる可能性があります。

まずエラーメッセージの中に

installing bundler バージョン名

があるのでこれを確認。自分の場合は2.2.16になっていました。

bundler -v

でbundlerバージョンを調べる。自分の場合は2.2.15になっていました。

ここでbundlerのバージョンがローカルPCとherokuで違うので、ローカルPCのbundlerをherokuのbundlerに合わせていきます

gem uninstall bundler
gem install bundler --version '2.2.16'
rm Gemfile.lock
bundle _2.2.16_ install --without production
bundler -v

これで期待していたbundlerのバージョンが表示されればOKです。

また、git push heroku main時に以下のようなエラーメッセージが表示されていた場合、

remote:        Your bundle only supports platforms ["x86_64-darwin-20"] but your local platform
remote:        is x86_64-linux. Add the current platform to the lockfile with `bundle lock
remote:        --add-platform x86_64-linux` and try again.

その通りにコマンドを実行すればOKです

bundle lock --add-platform x86_64-linux

ではこれをあげていきます。

git add .
git commit -m "add Herroku settings"
git push heroku main

herokuコマンドでDB周りを操作

もしデータベースを使って何かを表示させている場合は、以下のコマンドで反映させます

heroku run rails db:migrate

rails cを使ってデータベースに何かを入力する場合などは、以下のコマンドで行えます

heroku run rails c

heroku上のアプリにbashで入ることもできます

heroku run bash -a アプリ名

herokuをログアウトするには以下のコマンドを実行します

heroku logout

まとめ

実際にherokuを使ってあげようとしてみると、結構色々なことに引っかかって時間かかりました。

でも実際に公開できると、かなり達成感があるし、ポートフォリオとしてもアピールしやすいので、

ぜひ無料で公開してみてください

転職を本気で考えている方向けのプログラミングスクール!【DMM WEBCAMP】