Ruby on Railsで作ったファイルをHerokuにデプロイしようとしてもエラーが出る…
どうすればいいんだろう?
この記事では、そのような人に向けて、AWSやローカル環境で作ったRubyonRailsのアプリをHerokuにデプロイする方法を紹介します。
Herokuにデプロイするのは初心者の人には難しく感じる人も多いと思います。
デプロイしようとしても、エラーが出て挫折することも多いでしょう。
そんな初心者の人でもHerokuにデプロイできるように手順を解説していきます。
Herokuにデプロイするために必要な事前準備
Herokuにデプロイする時に気をつけたいのが「SQL」の違いです。
Ruby on Railsの標準のSQLはsqlite3。
それに対してHerokuのSQLはPostgreSQLとなっています。
この違いを考えずにデプロイしようとするとエラーが起こります。
このSQLの違いを考慮して、問題なくHerokuにデプロイするためには、Gemfileとdatabase.ymlの2つを修正します。
Herokuにデプロイするために Gemfileを修正する
Ruby on Railsの初期設定では、全ての使用するSQLはSqlite3となっています。
Gemfileにもgem 'sqlite3’
と書かれているのでこれを修正します。
Sqlite3は開発環境、テスト環境だけで使用するようにして、PostgreSQLはプロダクション環境でのみ使用するようにGemfileに書き込みます。
gem 'sqlite3’
の場所を下のように書き換えてください。
gem 'sqlite3', group: :development
gem 'pg', group: :production
書き換えた後はbundle installします。
ただし、PostgreSQLはプロダクション環境でしか使用しないのでbundle installするときに、–without productionも付けるようにします。
$ bundle install --without production
無事インストールされれば、Gemfileの変更は完了です。
database.ymlを変更する
Gemfileの変更したら、次にConfig/database.ymlを修正します。
database.ymlを開くいて、下の方にあるproduction:
という箇所を見てください。
production:
: *default
database: db/production.sqlite3
デフォルトでは、上記のようにプロダクション環境でもsqlite3を使用するように書かれています。
そこで、プロダクション環境ではPostgreSQLを使用するように以下のように書き換えましょう。
production:
:*default
adapter: postgresql
encoding: unicode
pool: 5
これでプロダクション環境ではsqlite3を使用せずに、PostgreSQLを使用するようになります。
変更を保存してHerokuのデプロイへ
上記で変更をした後は、変更を保存し、コミットします。
masterブランチ以外にいる場合は、masterブランチに移動して、変更したブランチをマージします。
まず変更を全て追加します。
$ git add -A
その後にコミットします。
$ git commit -m "change for heroku deploy"
そして、masaterブランチに移動します。
$ git checkout master
変更したブランチをマージします。
$ git merge **(変更したブランチ名)
MasterブランチからHerokuにデプロイする
では、ここからHerokuにデプロイしていきます。
Herokuのアカウントを作成していることを前提としているので、まだの人はアカウントの作成をしてから、次の通りに作業を進めてください。
Herokuにログイン
ターミナルからHerokuにログインします。
$ heroku login
上のコードをターミナルに入力すると「Press any key to open up the browser to login or q to exit:」と表示されるので、「q」以外の文字をキーボードで押しましょう。
すると、自動的にブラウザが立ち上がり、ログイン画面が表示されます。
「Log in」を押して、必要項目を入力すると、ログインすることができます。
「logged in」と表示されたら、ログイン完了です。
ファイルを作成する
次にファイルを作成します。
下のコマンドをターミナル上に打ち込んでください。
$ heroku create **(自分が付けたいアプリケーション名)
このファイル名が直接urlになります。
http://(自分が付けたHerokuアプリケーション名).herokuapp.com
同じ名前がある場合
すでに誰かが同じ名前を付けているものがある場合Name keijiban is already taken
と表示されます。
名前はハイフンと数字を含めるようにした方がいいです。
無料でデプロイできる数を超えている場合
Herokuで無料でデプロイできる数は5個までです。
すでに5個デプロイしている場合はYou've reached the limit of 5 apps for unverified accounts. Delete some apps or add a credit card to verify your account.
と表示されます。
使っていないものを削除するか、クレジットカードを登録しましょう。
自分が作成したファイルをHeroku上にpushする
$ git push heroku master
上のコマンドを打ち込むと、自分のローカル環境のMasterブランチからHerokuのMasterブランチへPushできます。
データの量にもよりますが、1分ほど時間がかかります。
Heroku上のデータベースを動かす
デプロイしただけでは、データベースは動いていません。
そのため、デプロイ先のデータベースを動かすために下のコマンドを打ち込みます。
$ heroku run rake db:migrate
データベースが無事動けば、これでHerokuへのデプロイは完了です。
デプロイされたものを見る
$ heroku open
上のコマンドをターミナルに打ち込むことで、ブラウザが立ち上がり、デプロイしたページが開きます。
heroku openで開いたページは、Root_pathの画面が表示されます。
http://(自分が付けたHerokuアプリケーション名).herokuapp.com
そのため、root_pathを設定していない場合はurlを変更して、自分のページがちゃんと表示されているか確認しましょう。
masterブランチ以外からpush
masterブランチ以外のブランチからHerokuにpushする場合は下のコマンドを打ち込んでください。
$ heroku push heroku 現在のブランチ名:master
RailsファイルをHerokuのデプロイする方法まとめ
HerokuにデプロイするにはGemの変更とconfigのdatabaseの変更が必要だということでした。
手順通りにすれば、問題なくデプロイできるはずなので、落ち着いてチャレンジしてみてください。
>>Ruby on Railsの学習方法のまとめはこちら