この問題は既に自力で解決したのですが、方法が合っているのか分からず質問させていただきました。
『Ruby on Rails チュートリアル 第4版』の13章の最後のAWS S3に画像をアップする部分です。
gemのCarrierWaveとfogを使用して画像をS3にアップしたところ、
アップした画像がweb上に表示されていませんでした。
作成された画像のリンクをブラウザから調べたところ以下のようになっていました。
「https://バケット名.s3.amazonaws.com/uploads/micropost/picture/304/ファイル名.jpg」
なんとなく「https」から「http」に変えたところ読み込めたので、
/config/initializers/carrier_wave.rb
に以下の1行を追加しました。
ruby
1if Rails.env.production? 2 CarrierWave.configure do |config| 3 ・ 4 ・ 5 ・ 6 config.fog_directory = ENV['S3_BUCKET'] 7 # 追加した行↓ 8 config.asset_host = 'http://バケット名.s3.amazonaws.com' 9 end 10end
このようにしたところちゃんと画像が表示されました。
ただこのような設定の追加は『Ruby on Rails チュートリアル 第4版』では記載されていませんでしたし、半年前に同じチュートリアルをやったのですがこのときも記載しませんでした。
私がどこかを間違っていてチュートリアル通りにしなかった可能性もあるのですがわかりませんでした。
ちなみに、「/config/environments/production.rb」では以下のようにhttpsで指定をしています。
ruby
1Rails.application.configure do 2 ・ 3 ・ 4 config.force_ssl = true 5 ・ 6 ・ 7 host = 'https://polar-fjord-***.herokuapp.com' 8 ・ 9 ・ 10end
抽象的な質問で申し訳ないのですが、
「carrier_wave.rb」の「config.asset_host」に対してドメイン名を指定するやり方は合っていますでしょうか。
または、もっとスマートなやり方はあるのでしょうか。
どうかご教授お願いいたします。
あなたの回答
tips
プレビュー