LoginSignup
4
2

More than 5 years have passed since last update.

Heroku Review AppsでRailsアプリケーションを動かすのに調べたこと

Posted at

どのpull reqのアプリかどうかを判定する方法

app.json
{
  "env": {
    "HEROKU_APP_NAME": {
      "required": true
    }
  }
}

app.jsonでHEROKU_APP_NAMEを設定しておくと、HEROKU_APP_NAMEにアプリ名-pr-pull reqの番号で値が入るので判定できる。

Amazon S3を使う

Review Appの場合pull reqごとに別環境前提になるので同じS3のバケットでディレクトリを別にするか、アプリごとにS3のバケットを作成後する。

同じS3のバケットを使う方法

アプリ毎に別のディレクトリにアップロードできるようにする。

CarrierWaveの例

class ApplicationUploader < CarrierWave::Uploader::Base
  def store_dir
     if ENV['HEROKU_APP_NAME'].present?
      "#{ENV['HEROKU_APP_NAME']}/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    else
      "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    end
  end
end

S3バケットを作成する方法

aws-sdk-rubyを使いS3バケットを作成、削除するようにすれば良い。

  1. pr-predestroy scriptでそのpull req用のS3のバケットを作成してバケットを環境変数にセットする
  2. pr-predestroy のときにpull req用のS3バケットを削除する

MySQLを使う

Clear DBは環境変数がDATABASE_URLで入ってこないため工夫が必要になる。

ビルド時にHerokuのAPIを使ってDATABSE_URLにセットする方法

database.ymlを修正する方法

database.yml
production:
  url: <%= ENV.fetch('CLEARDB_DATABASE_URL', '').sub('mysql://', 'mysql2://') %>
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2