bug解決のヒントが欲しい:carrierwave/developmentでのエラー
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 1,497
rails 5.0.0.1
で開発しています。
それまで問題なく動作していたcarrierwave
が、その後追加で作業をしていたら、development
モードにて、ファイルアップロードでrmagick_processing_error
というvalidation error(?)
が出ますが、解決の糸口わからず、こういった場合に何を確認していけば良いかアドバイス頂きたくお願いします。
development
では、localのフォルダに、production
ではcloudiary
というサービス内にファイルがアップロードされる設定にしており、少し前まで問題なく動作しておりました。
### エラーのログ
Started PATCH "/user/myaccount" for ::1 at 2017-08-20 12:30:34 +0900
Processing by User::UsersController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"5jlbhHcGv7Meiez8t/7BeT38me+IPhknWHUl/USu+4Mhk8MDFw/5Hq7MwElH9xTl6K8XwqLKcNauNiQuL3Eq6A==", "user"=>{"user_icon"=>#<ActionDispatch::Http::UploadedFile:0x007fd4cb1ad478 @tempfile=#<Tempfile:/var/folders/vv/4dmkkd0552q9s61sh59f_mlc0000gn/T/RackMultipart20170820-67771-1hhdbp9.JPG>, @original_filename="image1.JPG", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"user[user_icon]\"; filename=\"image1.JPG\"\r\nContent-Type: image/jpeg\r\n">, "user_icon_cache"=>""}, "commit"=>"画像を変更する"}
User Load (0.6ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 1], ["LIMIT", 1]]
Unpermitted parameter: user_icon_cache
(0.2ms) BEGIN
(0.2ms) ROLLBACK
追加していた作業として、思いたるのは、fog
,sitemap_generator
,rails-erd
のgem
を追加していたことです。
起きている現象詳細
以下の通り、carrierwave
のuploader
の記載をしています。過去ファイルは問題なくpublic/uploads
ないに上がっていたのですが、現在は、ファイルをアップロードすると、上述の通りrmagick_processing_error
というvalidation error(?)
が出ますが、アップロードしたファイルは、local
のpublic/uploads
にtemp
フォルダが作られ、そこにファイルが入っています。
##uploaders/user_icon_uploader.rb
class UserIconUploader < CarrierWave::Uploader::Base
if Rails.env.production?
include Cloudinary::CarrierWave
end
# Include RMagick or MiniMagick support:
include CarrierWave::RMagick
# include CarrierWave::MiniMagick
if Rails.env.development?
storage :file
elsif Rails.env.test?
storage :file
elsif Rails.env.production?
#storage :fog
end
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
# Provide a default URL as a default if there hasn't been a file uploaded:
# Create different versions of your uploaded files:
version :thumb do
process resize_to_fit: [50, 50]
end
def fix_exif_rotation
manipulate! do |img|
img.auto_orient!
img = yield(img) if block_given?
img
end
end
def extension_whitelist
%w(jpg jpeg gif png)
end
end
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
CarrierWave はファイルアップロードの際、最終的な保存先であるストアディレクトリへ保存する前に、まずキャッシュディレクトリへ一時保存します。
現在、
Unpermitted parameter: user_icon_cache
というエラーがでていることからキャッシュの保存段階で躓いており、最終的な保存先に保存されていないという状況ではないでしょうか?
ユーザコントローラのparams.require(:user).permitに、user_icon_cacheを加えてみてはいかがでしょうか?
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.22%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2017/08/29 07:52