現象
開発環境ではうまく動くのに、本番環境ではなぜかファイルのアップロードが出来ていなくて保存ができない現象が発生したので、その時の解決方法を残しておきます。
エラー
エラー
#<ActiveModel::Errors [#<ActiveModel::Error attribute=images, type=translation missing: ja.errors.messages.mini_magick_processing_error, options={}>]>
原因
- MiniMagick(ImageMagick)の日本語化が出来ていないため、翻訳に失敗している。
- そもそも、MiniMagick(ImageMagick)がインストールされていないなど、エラーが発生している。
解決方法1
- config/locales/ja.yml に, MiniMagick(ImageMagick)のエラーの日本語訳を追加する。
config/locales/ja.yml
ja:
errors:
messages:
carrierwave_processing_error: 処理できませんでした
carrierwave_integrity_error: は許可されていないファイルタイプです
carrierwave_download_error: はダウンロードできません
extension_white_list_error: "%{extension}ファイルのアップロードは許可されていません。アップロードできるファイルタイプ: %{allowed_types}"
extension_black_list_error: "%{extension}ファイルのアップロードは許可されていません。アップロードできないファイルタイプ: %{prohibited_types}"
rmagick_processing_error: "rmagickがファイルを処理できませんでした。画像を確認してください。エラーメッセージ: %{e}"
mime_types_processing_error: "MIME::Typesのファイルを処理できませんでした。Content-Typeを確認してください。エラーメッセージ: %{e}"
mini_magick_processing_error: "MiniMagickがファイルを処理できませんでした。画像を確認してください。エラーメッセージ: %{e}"
解決方法2
- そもそもインストールされていない場合は、インストール
※私の環境では、こちらでした…😅
インストール
sudo apt-get -y install imagemagick
- 必要なモジュールが足りていない可能性がある場合は、convertコマンドのバージョン情報を調査して追加
※動いている開発環境との差異をみてください。
差異調査
convert -version