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
アプリ名がカレントディレクトリになるようにして、以下のコマンドをターミナルで実行
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を使ってあげようとしてみると、結構色々なことに引っかかって時間かかりました。
でも実際に公開できると、かなり達成感があるし、ポートフォリオとしてもアピールしやすいので、
ぜひ無料で公開してみてください