RailsでRmagickと一緒にcarrierwave gemを使用しています。アップローダーファイルに新しいバージョンを設定しました:リクエスト時にimagemagick/carrierwaveサムネイルを生成する
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
storage :file
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :preview do
process :resize_to_fill => [580, 350]
end
end
もちろん、rmagickとcarrierwaveを私のgemfileに含めました。今、私は私の意見では私の画像のプレビューバージョンをロードしよう:
@product.photos.first.image.preview
これは、すべてのエラーを与えるが、壊れたイメージをロードしません。画像のURLをコピーすると、ルーティングエラーが発生します( 'no route matches /path/to_my_imagesfolder/preview_image.png')。 プレビューメソッドを削除すると、画像が正しく読み込まれます。
何が問題なのですか?おそらく権限の問題だと思ったのですが、私は777でuploadsフォルダを設定しましたが、それでも失敗します。
アイデア?
編集:画像をもう一度アップロードすると、新しいバージョンが作成されます。 Rmagickが(TimThumbがPHPで行うように)リクエストされたときにRmagickを作成させることは可能ですか?少なくとも、すべてのバージョンをバッチ作成するコマンドはありますか?
あなたは.recreate_versionsを使用することができます
ナイス!しかし、これは一度このコードが正しく実行されると、それらを作成しますか?これを自動的に行う方法を知っていますか?ユーザーがまだ作成されていないバージョンを再作成して提供するたびに、そのたびに –
これをフォローするだけで、これが可能であるかどうかはわかりません。常にイメージをアップロードしている場合を除き、負荷の問題はあまり発生しません。アップロード時に親指を生成するのが一般的です。 – easyjo
あなたはおそらく正しいでしょう。私はそれを行い、私が新しいバージョンを作成するたびにタスクを作成すると思う。 –