Rails Tutorialの13章をやっている時、最後のherokuへのデプロイで何故かTutorial通りにやってもできず詰まった。
最初はfogのエラーかと思ったが、CarrierWaveの設定が原因だった。
#環境
Mac OS High Sierra 10.13.2
Ruby on Rails 5.1.4
CarrierWave 1.1.0
#詰まった点
herokuにデプロイ時に下記エラーメッセージが発生。
LoadError: cannot load such file -- fog
#原因
調べてみるとfog自体が悪いというよりはfogを利用する、CarrierWave自体の設定がおかしいらしい。そこでCarrierWaveのReadmeのfogの欄を読んだ。https://github.com/carrierwaveuploader/carrierwave/blob/master/README.md#fog
If you want to use fog you must add in your CarrierWave initializer the following lines
config.fog_provider = 'fog' # 'fog/aws' etc. Defaults to 'fog'
と書いてあり、fogを使うのであれば、initializerにfogの設定をaddしてくださいね、デフォルトは"fog"ですよと書かれている。
さらにその下のUsing Amazon S3の欄をみると
https://github.com/carrierwaveuploader/carrierwave/blob/master/README.md#using-amazon-s3
CarrierWave.configure do |config|
config.fog_provider = 'fog/aws' # required
どうやらRails Tutorialのようにawsを使う場合は、"fog/aws"に変更しなくてはならないらしい。。
#解決
最終的に、下記のように設定を変更し、再度git addとcommitを行い、herokuにpushしたらいけた。
if Rails.env.production?
CarrierWave.configure do |config|
config.fog_provider = 'fog/aws' #←ここを追記
config.fog_credentials = {
:provider => 'AWS',
:region => ENV['S3_REGION'],
:aws_access_key_id => ENV['S3_ACCESS_KEY'],
:aws_secret_access_key => ENV['S3_SECRET_KEY']
}
config.fog_directory = ENV['S3_BUCKET']
end
end
同じように詰まった人の参考になれば。