6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】本番環境との画像参照の切り替え方について

Last updated at Posted at 2020-05-30

#この記事について
デプロイを済ませたアプリを、ローカル環境で画像投稿するとなぜか全てNoImageになってしまう!

それの原因がわかったので記事にします。

おそらく、僕と同じで某プログラミングスクールを卒業した人は高確率でこの問題にぶつかっているんじゃないかな?と思っています。
なぜなら、カリキュラムに書いてある内容には、この問題について触れていないから(笑

##こんな感じ
全部NoImageになっちゃってるじゃん!!(汗

スクリーンショット 2020-05-30 20.05.58.png

#解決方法

/config/initializers/carrierwave.rbの記述で、本番とローカルで参照を分岐させる処理がなかったので追加して解決しました。

カリキュラムにはcarrierwave.rbというファイルを作成して、修正前のソースコードを記述しましょう。としか書かれていなかったんですね。
なので、ここでこのファイルが何をしているのか。をしっかり理解できていないと、コピペして満足してしまいます(笑

修正前carrierwave.rb
require 'carrierwave/storage/abstract'
require 'carrierwave/storage/file'
require 'carrierwave/storage/fog'

CarrierWave.configure do |config|
    config.storage = :fog
    config.fog_provider = 'fog/aws'
    config.fog_credentials = {
      provider: 'AWS',
      aws_access_key_id: Rails.application.secrets.aws_access_key_id,
      aws_secret_access_key: Rails.application.secrets.aws_secret_access_key,
      region: 'ap-northeast-1'
    }
    config.fog_directory  = 'ここはアプリごとに異なる'
    config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/ここはアプリごとに異なる'
end

なので、if Rails.env.production?で本番かローカルかで参照する箇所を分岐させます。
本番だったらAWS、ローカルだったらstorageを:fileに。といった感じですね。

修正後carrierwave.rb
require 'carrierwave/storage/abstract'
require 'carrierwave/storage/file'
require 'carrierwave/storage/fog'

CarrierWave.configure do |config|
  if Rails.env.production?
    config.storage = :fog
    config.fog_provider = 'fog/aws'
    config.fog_credentials = {
      provider: 'AWS',
      aws_access_key_id: Rails.application.secrets.aws_access_key_id,
      aws_secret_access_key: Rails.application.secrets.aws_secret_access_key,
      region: 'ap-northeast-1'
    }
    config.fog_directory  = 'ここはアプリごとに異なる'
    config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/ここはアプリごとに異なる'
  else
    config.storage :file
    config.enable_processing = false if Rails.env.test?
  end
end

これを記述して、再度rails sをし直しましょう!
じゃないと修正内容が反映されないのでお気をつけて!

はい。反映されました!

スクリーンショット 2020-05-30 20.13.37.png

#さいごに
理解している人からすれば「そりゃそうだ」っていう話ですが、やっぱり初学者はこういう当たり前の問題にぶつかりがちな気がします。
ですので、もし同じような事に悩まされている方がいて、この記事がお手伝いなったら嬉しいなぁ。と思っています。

それでは、ありがとうございました!

6
6
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
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?