#解決したいこと
Railsアプリケーションにて先日AWSでのデプロイが完了し大まかな挙動確認も終わったのですが一点だけ問題がありました。
ローカルではうまく行っていたHEIC HEIF形式(iPhoneで撮影した写真)をiCloudで共有しMacで投稿する際のみうまくいきません。
#ローカル
・HEIC形式の保存+変換 ○
・JSでのプレビュー表示 ×
#本番環境(Mac)
・HEIC形式の保存+変換 ×
・JSでのプレビュー表示 ×
#本番環境(iPhone)
・HEIC形式の保存+変換 ○
・JSでのプレビュー表示 ○
このようにMacからHEIC画像を投稿する場合のみうまくいきません。
ご存知の方ご教授いただけると嬉しいです。
#コード
Ruby
1image_uploader.rb 2 3class ImageUploader < CarrierWave::Uploader::Base 4 # Include RMagick or MiniMagick support: 5 include CarrierWave::RMagick 6 include Piet::CarrierWaveExtension 7 # include CarrierWave::MiniMagick 8 if Rails.env.development? || Rails.env.test? 9 storage :file 10 else 11 storage :fog 12 end 13 14 def extension_whitelist 15 %w(jpg jpeg gif png HEIC HEIF heic heif) 16 end 17 18 process :convert => 'jpg' 19 process optimize: [quality: 10] 20 # process :resize_to_fit => [700, 700] 21 22 def filename 23 super.chomp(File.extname(super)) + '.jpg' if original_filename.present? 24 end 25 26 def filename 27 "#{secure_token}.#{file.extension}" if original_filename.present? 28 end 29 30 protected 31 def secure_token 32 var = :"@#{mounted_as}_secure_token" 33 model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.uuid) 34 end 35 36 37end 38
Ruby
1carrierwave.rb 2 3require 'carrierwave/storage/abstract' 4require 'carrierwave/storage/file' 5require 'carrierwave/storage/fog' 6 7CarrierWave.configure do |config| 8 if Rails.env.development? || Rails.env.test? 9 config.storage = :file 10 else 11 config.storage = :fog 12 config.fog_provider = 'fog/aws' 13 config.fog_credentials = { 14 provider: 'AWS', 15 aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'], 16 aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'], 17 region: 'ap-northeast-1' 18 } 19 config.fog_directory = '×××' 20 config.asset_host = 'https://×××.s3.amazonaws.com' 21 end 22end
ローカルでは保存もされて表示もされますが本番では保存されずコントローラ で指定している
Ruby
1redirect_to new_item_path
が発生してしまいます。
どなたかお分かりになりますでしょうか??
あなたの回答
tips
プレビュー