This page looks best with JavaScript enabled

【Ruby】HanamiでHello World→Herokuデプロイ

 ·   ·  ☕ 2 分で読めます
✏️

環境

  • Ruby 2.7.4
  • Hanami 1.3.4
  • MySQL 8.0.23
  • Heroku CLI 7.56.1

ローカル環境構築

まず、HanamiはRuby3では使えないらしい。

Cannot create new hanami application · Issue #1108 · hanami/hanami

Boot Error
Something went wrong while loading /Users/k_end/personal/groovy_grouping/config.ru

Hanami::Model::Error: PG::ConnectionBad: could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5432? could not connect to server: Connection refused Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 5432?

というわけで、Rubyのバージョンを2.7.4(現時点の2.xx最新版)にして、hanami newし直す。DBは使い慣れたMySQLにした。

1
$ hanami new groovy-grouping --database=mysql

HanamiはRailsと違って、create app時点ではcommitされていない。

Herokuデプロイ

参考:HANAMI を Heroku にデプロイしてみた - Qiita

特にRailsのときと変わらず、Heroku CLIを使う。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$ heroku login
heroku: Press any key to open up the browser to login or q to exit:
Opening browser to https://cli-auth.heroku.com/auth/cli/browser/.....
Logging in... done
Logged in as aiandrox7@gmail.com

$ heroku git:remote -a groovy-grouping
set git remote heroku to https://git.heroku.com/groovy-grouping.git

$ git push heroku main

The Heroku CLI | Heroku Dev Center

Railsと比べると、デプロイにかかる時間が圧倒的に短い。
デプロイでは特に問題は起きないが、アクセスするとApplication Errorになっている。

2021-07-20T13:29:24.949581+00:00 app[web.1]: bundler: failed to load command: rackup (/app/vendor/bundle/ruby/2.7.0/bin/rackup)
2021-07-20T13:29:24.950785+00:00 app[web.1]: /app/config/environment.rb:46:in `fetch': key not found: "SMTP_HOST" (KeyError)
2021-07-20T13:29:24.950813+00:00 app[web.1]: from /app/config/environment.rb:46:in `block (3 levels) in <top (required)>'

メイラーは使用しないのでコメントアウトする。もし必要なら、AmazonSESやSendGridを使用するので、そのホストを設定すればよさそう。

2021-07-20T13:39:53.866545+00:00 app[web.1]: bundler: failed to load command: rackup (/app/vendor/bundle/ruby/2.7.0/bin/rackup)
2021-07-20T13:39:53.867822+00:00 app[web.1]: /app/config/environment.rb:21:in `fetch': key not found: "DATABASE_URL" (KeyError)
2021-07-20T13:39:53.867862+00:00 app[web.1]: from /app/config/environment.rb:21:in `block (2 levels) in <top (required)>'

参考記事ではここでローカルホストを使っているが、本番ではMySQLに接続したいのでDBを用意することにする。
Hashlogの移行時と同様にJawsDBを使用する。

heroku addons:create jawsdb

image

下記コマンドでJawsDRのURLを取得できる。
JawsDB MySQL | Heroku Dev Center

heroku config:get JAWSDB_URL
mysql://ユーザーネーム:パスワード@なんちゃらかんちゃら.us-east-1.rds.amazonaws.com:3306/データベース名

そして、Herokuの環境変数にDB URLを入れる。
このとき、"mysql://..."ではなく、"mysql2://..."にする。そういえば、Railsのときもそうでしたね。

heroku config:set DATABASE_URL="mysql2://ユーザーネーム:パスワード@なんちゃらかんちゃら.us-east-1.rds.amazonaws.com:3306/データベース名"

以上の手順でデプロイができた。

image

Share on

END
END
@aiandrox

目次