【Heroku】Ruby on Rails+MySQLで作ったファイルのデプロイ
Herokuは無料で作成したファイルをデプロイできる優れたサービス。
Railsで作ったファイルもGitHubと連携すれば勝手にデプロイしてくれる。
ただ、DBを使う場合はそううまく行かない。
Herokuと連携させるところからまとめておく。
条件
- Ruby on Railsでファイル作成
- DBはMySQLを使用
- Herokuのアカウントは取得済み
Herokuを設定
まずはHerokuのコマンドがローカルのターミナルで使えるようにする。
herokuをインストールする。
$ brew tap heroku/brew && brew install heroku
ターミナルからherokuへのログイン
$ heroku login => heroku: Press any key to open up the browser to login or q to exit:
q以外のキーを押すとブラウザが開いてherokuにログインできる。
1回やっておけば、次回以降はこの作業は不要。
Herokuにファイルをアップロード
続いてファイルをアップロードする。
まずはフォルダの作成から。
$ heroku create フォルダ名(記号はハイフンのみ)
アップロードしたいフォルダに移動して、gitリポジトリを作成、add, commitする
$ git init $ heroku git:remote -a フォルダ名 $ git add . $ git commit -am "first commit"
commitまでできたらファイルをpushする。
$ git push heroku master
HerokuでDB作成
ではいよいよDB周りを進めてく。
まずはDBを作る
$ heroku addons:create cleardb:ignite => Please verify your account to install this add-on plan (please enter a credit card) For more information, see https://devcenter.heroku.com/categories/billing Verify now at https://heroku.com/verify
おっと、初めてだったからクレジットカードの登録が必要とのこと。
https://heroku.com/verifyから登録ができるので忘れずにしておく。
もう一度上のコマンドを入力すればDBの作成が完了。
続いてDBの接続を修正するために環境変数を確認する。
$ heroku config => CLEARDB_DATABASE_URL: mysql://~ LANG: en_US.UTF-8 RACK_ENV: production RAILS_ENV: production RAILS_LOG_TO_STDOUT: enabled RAILS_SERVE_STATIC_FILES: enabled SECRET_KEY_BASE: ...
このままだとmysqlにしか繋がらないためエラーが出る。
そこでDATABASE_URLをmysql2で追加してあげる。
$ heroku config:set DATABASE_URL='mysql2://~(ここはCLEARDB_DATABASE_URLと同じ)'
これで環境変数は整ったはず。
というわけでマイグレートしてみる。
$ heroku run rake db:migrate
できた!
データの先入れ
先にデータを入れておきたい場合なんかは、seedファイルを読み込めばOK
$ heroku run rake db:seed
で、多めのデータを入れておくとこんな感じのエラーが出ることがある
Mysql2::Error: User '~' has exceeded the 'max_questions' resource (current value: 3600)
これは無料枠だと時間当たりのデータの読み込み回数が決まっているので出てしまうエラー。
ヤサゴリはしばらく放置してみたら問題なく全ファイル読み込めた。
2回目以降のデプロイ
ローカルで改めて編集したあとはこれでアップロードする。
$ git add . $ git commit -am "make it better" $ git push heroku master
これで反映されている。
cssが反映されない場合
ローカルのフォルダからpushするとcssが反映されない時がある。
その時は以下を変更すればできた。
/config/environments/production.rb
config.assets.compile = true <=最初はfalseになってる
ヤサゴリはこれでできた。
デプロイしたサイトの確認
ここまでできたらあとはデプロイしたページを開くだけ。
URLがないけど、このコマンドでブラウザが開いてくれる。
$ heroku open
これでデプロイ完了!