Carrierwave を使用して画像をアップロードしようとしましたが、アップロードが完了せず、エラーも発生せずにアップロードが永久に停止しました。
その後、サーバーを再起動した後でも、サーバーはそれ以上の要求に応答しませんでした。ここでサーバーを起動すると、サーバーログに「database.ymlで指定されたデータベースに接続しています」とだけ表示されて正常に起動します。ただし、どのリクエストにも応答しないため、ブラウザーは (エラーをスローすることなく) 応答を待機して永久にハングアップします。
これは、Carrierwave gem を使用してアップロードしようとした後に発生したため、関連している可能性があります。なぜ/どのようにこれが起こるのか理解できませんが。
申し訳ありませんが、ここで要求されたとおり、詳細情報が提供されます。
これは開発中、Windows 8 で発生しており、私は RMagick を使用しています。コンピューターを再起動すると、サーバーが再起動してリクエストに応答しました。アップロードを試みたとき、サーバーはリクエストに応答せず、スローやエラー、または応答なしで無期限にハングアップしました。その後、サーバーはリクエストへの応答を停止します。
画像を保存する必要があるディレクトリに、アップロードした元の画像と「小さい」画像の2つの画像がある「tmp」ディレクトリを見つけたので、RMagickの最初のサイズ変更後に問題が発生していると思いました。
ここにいくつかのデータがあります:
Rails バージョン: 3.12.2 Carrierwave バージョン: 0.8.0 RMagick バージョン: 2.13.2 ImageMagick バージョン: 6.8.1-0
アップローダ クラス:
class ImageUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
include CarrierWave::RMagick
# Choose what kind of storage to use for this uploader:
storage :file
# Override the directory where uploaded files will be stored. # This is a sensible default for uploaders that are meant to be mounted:
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:
def default_url
'/uploads/user/' + [version_name, 'no_photo.png'].compact.join('_')
end
version :small do
process :resize_to_limit => [30, 30]
end
version :medium do
process :resize_to_limit => [70, 70]
end
version :large do
process :resize_to_limit => [125, 125]
end
end