1

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
4

1 に答える 1

0

問題が何であるかを理解できませんでしたが、unbuntuでこれを試してみたところ、完全に機能したため、Windowsの問題でした. おそらく、それは ImageMagick 関数に関連していたのでしょう (ほとんどすべての問題は、画像の宝石とウィンドウに関連しています..)。

問題についての説明はありませんが、この回答を解決済みとしてマークします。

于 2013-06-04T22:18:50.790 に答える