HippoBlog
Web開発に関する備忘録や
日々の雑記ブログ
  • #Ruby on Rails
  • 2018年9月3日
ENTRY TITLE

HerokuにRailsアプリ(Rails + MySQL)を公開した際のログ

TEXT BY @hippohack@hippohack
TEXT BY @hippohack@hippohack
  • このエントリーをはてなブックマークに追加

以下の条件下で実施した際のログです。

  • Heroku CLIはインストール済み。
  • Railsアプリも作成済み。(実際は製作途中のアプリを使用)
    • アプリ内でDeviseを使用している。
  • すでにGit管理している。

herokuにログイン

[shell]

$ heroku login
Enter your Heroku credentials:
Email: *********@gmail.com
Password: *****************
Logged in as **********@gmail.com

既存アプリにGemを追加

  • 参考にさせていただいたサイトに、therubyracerのコメントアウトを解除とあったが、mini_racer がもともと入ってるのでそのまま行ってみる
  • 2つのGemについての詳細は調べてない。すみません。

[gemfile]

gem 'mini_racer', platforms: :ruby
# gem 'therubyracer', platforms: :ruby

gem 'rails_12factor', group: :production

Procfileを作成

  • Heroku上で実行されるコマンドを書いておくファイル。
  • Gemfileと同階層に設置。

[Procfile]

web: bundle exec rails server -p $PORT

Herokuにアプリを登録

  • herokuのサーバー上にGitリポジトリが作成される。
  • 同時に、公開URLとgitリポジトリのURLが生成される。

[shell]

$ heroku create
›   Warning: heroku update available from 7.0.22 to 7.14.4
Creating app... done, ⬢ hoge-fuga-12345
https://hoge-fuga-12345.herokuapp.com/ | https://git.heroku.com/hoge-fuga-12345.git

## HerokuにMySQLアドオンを追加する

[shell]

$ heroku addons:create cleardb:ignite
›   Warning: heroku update available from 7.0.22 to 7.14.4
Creating cleardb:ignite on ⬢ hoge-fuga-12345... !
▸   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

[shell]

$ heroku addons:create cleardb:ignite
›   Warning: heroku update available from 7.0.22 to 7.14.4
Creating cleardb:ignite on ⬢ hoge-fuga-12345... free
Created cleardb-piyo-12345 as CLEARDB_DATABASE_URL
Use heroku addons:docs cleardb to view documentation

(うざかったのでHeroku CLIをアップデート)

[shell]

$ heroku update
›   Warning: heroku update available from 7.0.22 to 7.14.4
heroku: Updating CLI from 7.0.22 to 7.14.4... done
heroku: Updating CLI... done
Updating completions... done

設定確認

[shell]

$ heroku config
=== hoge-fuga-12345 Config Vars
CLEARDB_DATABASE_URL: mysql://foo:bar-cdbr-iron-east-01.cleardb.net/heroku_12345?reconnect=true

CLEARDB_DATABASE_URL: mysql://[ユーザ名]:[パスワード]@[ホスト名]/[スキーマ名]?reconnect=true という、書式らしい。

設定変更

[shell]

$ heroku config:set DATABASE_URL='mysql2://foo:bar-cdbr-iron-east-01.cleardb.net/heroku_12345?reconnect=true'
Setting DATABASE_URL and restarting ⬢ hoge-fuga-12345... done, v4
DATABASE_URL: mysql2://foo:bar@us-cdbr-iron-east-01.cleardb.net/heroku_12345?reconnect=true

password変更

[shell]

$ heroku config:set DATABASE_PASSWORD = *****************
▸    DATABASE_PASSWORD is invalid. Must be in the format FOO=bar.
  • フォーマットエラー

[shell]

$ heroku config:set DATABASE_PASSWORD=*****************
Setting DATABASE_PASSWORD and restarting ⬢ hoge-fuga-12345... done, v5
DATABASE_PASSWORD: *****************

再確認

[shell]

$ heroku config
=== hoge-fuga-12345 Config Vars
CLEARDB_DATABASE_URL: mysql://foo:bar@us-cdbr-iron-east-01.cleardb.net/heroku_12345?reconnect=true
DATABASE_PASSWORD:    *****************
DATABASE_URL:         mysql2://foo:bar@us-cdbr-iron-east-01.cleardb.net/heroku_12345?reconnect=true

RailsのDB設定変更

  • ここはreleaseブランチ切って変更するのがスマートかなー。
  • さっき確認・変更した設定に書き換える。

[変更前]

production:
  <<: *default
  username: YOURNAME
  database: YOURDB
  password: <%= ENV['MYBOZU_DATABASE_PASSWORD'] %>

[変更後]

production:
  <<: *default
  username: foo
  database: heroku_12345
  password: <%= ENV['DATABASE_PASSWORD'] %>

Herokuにデプロイ

[shell]

$ git push heroku release-heroku:master

[shell]

︙
remote:        rake aborted!
remote:        Devise.secret_key was not set. Please add the following to your Devise initializer:
remote:        
remote:          config.secret_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx'
︙

[/config/initializers/devise.rb]

Devise.setup do |config|
  config.secret_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx' 
  • コメント解除して変更。

[shell]

$ git push heroku release-heroku:master
  • 再度プッシュ。
  • → エラー

[shell]

remote:        Download Yarn at https://yarnpkg.com/en/docs/install
remote:        rake aborted!
remote:        Uglifier::Error: Unexpected token: keyword (const). To use ES6 syntax, harmony mode must be enabled with Uglifier.new(:harmony => true).

[config/environments/production.rb]

Rails.application.configure do
    ︙
    config.assets.js_compressor = Uglifier.new(harmony: true)
    # config.assets.js_compressor = :uglifier
    ︙
  • コンプレッサー(Uglifier)の初期化処理の問題?かな。
  • シンボルではなくオブジェクト渡せってことですかね。

[shell]

$ git push heroku release-heroku:master
  • 再度プッシュ。

[shell]

remote: Verifying deploy... done.
To https://git.heroku.com/hoge-fuga-12345.git
 * [new branch]      release-heroku -> master
  • デプロイできた~。
  • よしアクセス!
  • → エラー

  • ログみて確認する。→ ログ見たがまぁわからんかった。
  • DB作ってないことに気づいた。

[shell]

# database.ymlの内容でデータベースを作成
$ heroku run rake db:create

# 未実行のマイグレーションファイルを全て実行する
$ heroku run rake db:migrate
  • 再度アクセス!
  • 動いたー!

参考にさせていただいたサイト


最後までお読みいただき、ありがとうございました。

ご意見などありましたら@hippohackへDMをお願いいたします。

  • このエントリーをはてなブックマークに追加