お世話になります。
##問題点
herokuにデプロイするとTypeError: no implicit conversion of nil into Stringという
エラーが出ます。
以前、デプロイし、画像を投稿して1日で表示されなくなりました。
そのため、AWSにおいてS3に移行しました。
移行後にデプロイしたところエラーが出たという流れです。
##エラーコード
terminal
1remote: The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`. 2remote: -----> Installing node-v10.15.3-linux-x64 3remote: -----> Detecting rake tasks 4remote: -----> Preparing app for Rails asset pipeline 5remote: Running: rake assets:precompile 6remote: rake aborted! 7remote: TypeError: no implicit conversion of nil into String 8remote: /tmp/build_2ce6676836f526e6c0682dca8b30108b/vendor/bundle/ruby/2.6.0/gems/carrierwave-2.1.0/lib/carrierwave/uploader/configuration.rb:115:in `eval' 9remote: /tmp/build_2ce6676836f526e6c0682dca8b30108b/vendor/bundle/ruby/2.6.0/gems/carrierwave-2.1.0/lib/carrierwave/uploader/configuration.rb:115:in `cache_storage' 10remote: /tmp/build_2ce6676836f526e6c0682dca8b30108b/config/initializers/carrierwave.rb:12:in `block in <main>' 11remote: /tmp/build_2ce6676836f526e6c0682dca8b30108b/vendor/bundle/ruby/2.6.0/gems/carrierwave-2.1.0/lib/carrierwave/uploader/configuration.rb:174:in `configure' 12remote: /tmp/build_2ce6676836f526e6c0682dca8b30108b/vendor/bundle/ruby/2.6.0/gems/carrierwave-2.1.0/lib/carrierwave.rb:14:in `configure' 13remote: /tmp/build_2ce6676836f526e6c0682dca8b30108b/config/initializers/carrierwave.rb:2:in `<main>'
##関連するコード
Ruby
1carrier_wave.rb 2 3require 'carrierwave/storage/abstract' 4require 'carrierwave/storage/file' 5require 'carrierwave/storage/fog' 6 7CarrierWave.configure do |config| 8 if Rails.env.production? 9 config.storage :fog 10 config.fog_provider = 'fog/aws' 11 config.fog_credentials = { 12 provider: "AWS", 13 aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'], 14 aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'], 15 region: ENV['AWS_DEFAULT_REGION'] 16 } 17 18 config.fog_directory = ENV['FOG_DIRECTORY'] 19 config.fog_attributes = { cache_control: "public, max-age=#{365.days.to_i}" } 20 21 else 22 config.storage :file 23 config.enable_processing = false if Rails.env.test? 24 25 end 26 CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:].\-+]/ 27end
Ruby
1image_uploader.rb 2 3class ImageUploader < CarrierWave::Uploader::Base 4 # Include RMagick or MiniMagick support: 5 # include CarrierWave::RMagick 6 # include CarrierWave::MiniMagick 7 8 # Choose what kind of storage to use for this uploader: 9 if Rails.env.development? 10 storage :file 11 elsif Rails.env.test? 12 storage :file 13 else 14 storage :fog 15 end 16 17 # Override the directory where uploaded files will be stored. 18 # This is a sensible default for uploaders that are meant to be mounted: 19 def store_dir 20 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 21 end
##確認したこと
Access_keyなどは.env.productionと言うファイルに記載してあります。
rails cから取得できています。
AWSに直接アップロードはできます。
開発環境において画像のアップロードはできています。
awsキーが読み取れないと言うことなのでしょうか。
ご回答のほど、よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。