railsで画像のexifファイルをexifrで取得する機能を実装しています
ローカルに保存されている画像のexifは読み込めるのですが、
本番環境のAWSs3に保存してある画像のExifを読み込むことに苦戦しています。
exiferの記述は、
if Rails.env == 'production' @exif = EXIFR::JPEG.new(@post.picture.url) else @exif = EXIFR::JPEG.new(Rails.root.to_s+"/public/#{@post.picture.url}") end
としていて、この状態でデプロイするとrailsのエラーが発生します。
ログを確認すると
Errno::ENOENT (No such file or directory @ rb_sysopen - https://app-bucket.s3.amazonaws.com/uploads/micropost/picture/9/flower.jpg):
との記述が見つかったのですが、このパス配下に画像は存在しています。
画像のアップロードはcarriawaveで行なっており、
carriawave.rbは
require 'carrierwave/storage/abstract' require 'carrierwave/storage/file' require 'carrierwave/storage/fog' CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:].\-+]/ CarrierWave.configure do |config| config.storage :fog config.fog_provider = 'fog/aws' config.fog_directory = "app-bucket" config.fog_credentials = { provider: 'AWS', aws_access_key_id: Rails.application.credentials.dig(:aws, :access_key_id), aws_secret_access_key: Rails.application.credentials.dig(:aws, :secret_access_key), region: Rails.application.credentials.dig(:aws, :region), path_style: true } end
と記述しています。
どこかs3の設定やパスの指定が間違っているのでしょうか?
もしくは、
exifrはローカルファイルのexif情報しか取得できないのでしょうか?
アドバイスをいただきたいです。よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。