目標:Herokuでデプロイする
環境:
mac Catalina 10.15.7
ruby 2.7.3
rails 2.5.2
テキストエディタ Visual studio code 1.56.2
前提:
herokuにアカウントは作成してある。
gitにレポジトリは作成しており、リモートレポジトリを繋いでいる。
道のり:
1. rails newで新しいアプリ作成
2. postgresqlをgemに追加し、bundle install
group :production do
gem 'pg'
end
をgemに加え、$ bundle install の実行
3. herokuのCLIインストール
$ brew tap heroku/brew && brew install heroku
でインストールできるらしい。
が、自分は以前に入れていたらしく
$ heroku --version
とすると、
dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.67.dylib
Referenced from: /usr/local/bin/node
Reason: image not found
zsh: abort heroku --version
と出てきた。
ググってみて、以下に行き着いた。
railsでローカルアクセスした時にエラーになる(node) - ムーのしょ〜もない様でしょ〜もなくもないブログ
要は、nodeをインストールした際に icu4cというのを含めてインストールしてしまい、元々macに入っていたlibicucore.dylib というライブラリと干渉してしまったらしい。
$ brew reinstall node
の実行で解決。
4. herokuにログイン
$ heroku login --interactive
5. herokuにSSH接続できるようにする
$ heroku keys:add
6. herokuにアプリの作成場所を作る
$ heroku create
7. heroku にデプロイ
$ git push heroku master
以上。
感想:AWSにデプロイするより全然簡単だった。
追記:MySQLからPostgreSQLに変更してみる。
元々herokuでデプロイするつもりで作成していなかったアプリをherokuでデプロイすることにしたので、DBをMySQLからpostgreSQLに変更する必要がでた。
実際はかなり悪手なのかもしれないが、今回はherokuの公式ドキュメントにもその方法が載っていたので、手順にしたがって変更してみる。
https://devcenter.heroku.com/articles/heroku-mysql
1. MySQLのアドオンをプロビジョニングする
$ heroku apps
herokuに登録しているアプリ一覧が見れる。
$ heroku addons:create cleardb:ignite --app アプリ名
cleardbのアドオンをプロビジョニングする。
※cleardbを使用するにはクレジットカードの登録が必要。一定量までは課金なしで使用できる。
2. HerokuPostgreSQLに変更する
PostgreSQLをローカルで実行する
PostgreSQLをローカルで実行している時にDBに接続できるように、環境変数を設定する。
$ export DATABASE_URL=postgresql://$(whoami)
上記コマンドのDATABASE~以降のURLは下記コマンドで確認できる。
$ heroku config --app アプリ名
アプリに設定している環境変数などを取得できる。
=== アプリ名 Config Vars
DATABASE_URL: postgres://dfevijm...(略)
LANG: en_US.UTF-8
RACK_ENV: production
RAILS_ENV: production
RAILS_LOG_TO_STDOUT: enabled
RAILS_SERVE_STATIC_FILES: enabled
SECRET_KEY_BASE: 4b573c0563ad3...(略)
PCにpostgresqlをインストール
調べたところ、自分のPCにはすでに入っていた見たいなので、飛ばしました。
必要なら下記サイトを参考にすれば大丈夫だと思います。
Postgres.app – the easiest way to get started with PostgreSQL on the Mac
※ちなみに、 $ which psql
で表示されるパスがPostgresql.appディレクトリ の中ではなかったので、上記サイトの3番だけ行いました。
3. pgloaderのインストール
インストール
https://github.com/dimitri/pgloader/blob/master/README.md
を参考にインストールします。
$ brew install --HEAD pgloader
自分はmacなので上記コマンドを実行。
4. データの移行
Postgresqlデータベースを作成し、CLIを使用してMySQLデータを移行する。
$ createdb pgdbname
$ pgloader mysql://username:password@localhost/mysqldbname postgresql:///pgdbname
初学者なので、間違い等あれば指摘していただけると助かります。
あくまで備忘録として書きました。次回、行う際もブログを見返しながらも、公式ドキュメントも確認しつつ行おうと思います。