「はたらく」にまつわるテクニックやナレッジをシェアして、スキルアップしよう

This page is intended for users in Japan. Go to the page for users in United States.

herokuでridgepoleを動かす(要約版)
エンジニアのためのテクニック
内田 将之
2015/09/02

ridgepoleがherokuで動くか試していて、結論から言うと動かすことに成功した。

やり方は簡単で、rakeタスクからridgepoleを呼び出す。

$bundle exec rails g task ridgepole でlib/tasks/ridgepole.rake が作成されるので、 こちらのページの内容に従って編集する。

http://fujiyasu.hatenablog.com/entry/2015/06/21/140826 ``` namespace :ridgepole do desc "Exec Apply Dry Run" task applydryrun: :environment do exec "bundle exec ridgepole -c config/database.yml -E #{Rails.env} -f #{Rails.root}/Schemafile --apply --dry-run" end

desc "Exec Apply" task apply: :environment do exec "bundle exec ridgepole -c config/database.yml -E #{Rails.env} -f #{Rails.root}/Schemafile --apply" end end ``` (エクスポートはいらないので省略)

後は、コマンドで

$heroku run rake ridgepole:apply_dry_run で動作確認

$heroku run rake ridgepole:apply でherokuで使っているDB(postgres可)に適用できる。


ただし注意点は以下の通り。 ridgepoleで接続したdbの情報はきちんとrailsのconfig/database.yml に書かないといけない。 書かないと以下のエラーが出る。 [ERROR] could not connect to server: No such file or directory

ridgepoleからDBへの接続は、きちんとユーザ名、パスワード、ホスト、ポート、DB名の記載が必要。

他のサービスだったら当たり前といえば当たり前の話だけど、herokuに限ってはconfig/database.yml の設定は省略することができる。 https://devcenter.heroku.com/articles/rails-database-connection-behavior

環境変数 DATABASEURLが設定されていたら、DB接続時によろしく設定してくれる。 実装を見ると DATABASEURLからパースしている。

https://github.com/heroku/heroku-buildpack-ruby/blob/4b493f80ed9ea9ae7bf8cd743068fb79e3c8b9a2/lib/language_pack/ruby.rb#L636-L689

0 ストック
352 view

Page top icon