heroku+S3のステージング環境を構築する

公開日:2019-08-03
最終更新:2019-08-04

動作環境
・heroku
・rails5
・carrierwave+fog+S3

やりたいこと

heorkuのステージング環境構築についていろいろ調べてましたが、
S3の本番とステージングの使い分けについてはなぜか情報が少なかったので残しておきます。
今回は、ステージング用のS3バケットを別で作成する方法でやります。
コーディングは1行で終わります。

前提としていること

・carrierwave+s3でアップローダー実装済み
・herokuで本番アプリとステージングアプリを作成済み
・ステージング用のS3バケットを作成済み

まずはcarrierwave+fogを実装する

「carrierwave fog」などでググると参考記事がたくさん出てきます。
参考記事
https://remonote.jp/rails-carrierwave-fog-s3

参考にして実装するとcarrierwave.rbは下のようになっていると思います。

CarrierWave.configure do |config|  
  if Rails.env.production?  
    config.fog_provider = 'fog/aws'  
    config.fog_directory = 'バケット名'  
    config.fog_credentials = {  
        provider: 'AWS',  
        aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],  
        aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],  
        region: ENV['AWS_REGION'],  
        path_style: true  
    }  
    config.storage :fog  
  else  
    config.storage :file  
    config.enable_processing = false if Rails.env.test?  
  end  
end  

バケット名を環境変数にする

config.fog_directory = 'バケット名'
この'バケット名'ENV['AWS_S3_BUCKET_NAME']のような環境変数にします。

config.fog_directory = ENV['AWS_S3_BUCKET_NAME']  

環境変数にしてしまえば、あとはherokuの環境変数をステージングと本番でそれぞれ設定すればOKです。

heroku config varsを追加

heroku CLI上で
heroku config:set AWS_S3_BUCKET_NAME=<本番のバケット名> --app <本番アプリ名>
heroku config:set AWS_S3_BUCKET_NAME=<ステージングのバケット名> --app <ステージングアプリ名>
を実行すれば完了です。
ステージングアプリでアップロードした画像がステージング用バケットに保存されていれば成功です。

RAILS_ENV=stagingは非推奨

ステージング環境構築する際にまず思いついたのが、
herokuをRAILS_ENV=stagingで動かす方法ですが、
今回の場合はアンチパターンだそうです。
heroku dev centerの回答がわかりやすかったです。
参考記事
https://devcenter.heroku.com/articles/deploying-to-a-custom-rails-environment

It may be tempting to create another custom environment such as “staging” and create a config/environments/staging.rb and deploy to a Heroku app with RAILS_ENV=staging.

This is not a good practice. Instead we recommend always running in production mode and modifying any behavior by setting your config vars.

記事が少しでもいいなと思ったらクラップを送ってみよう!
10
+1
@mocchiの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする