Carrierwave上传后服务器没有响应请求

时间:2013-06-01 03:39:56

标签: ruby-on-rails ruby-on-rails-3 imagemagick carrierwave rmagick

我尝试使用Carrierwave上传图片,并且上传被永久挂起而不会导致上传或出错。

之后,即使重新启动服务器,服务器也不会响应任何更多请求。当我现在启动服务器时,它正常启动,服务器日志只是说“连接到database.yml指定的数据库”。但是,它不响应任何请求,使浏览器永远等待响应(不会抛出错误)。

这是在我尝试使用Carrierwave gem进行上传之后发生的,所以我认为这可能是相关的。虽然我不明白为什么/如何发生这种情况。

对不起,按此处要求提供更多信息:

这正在开发中,在Windows 8中我正在使用RMagick。 我重新启动计算机,服务器再次启动以响应请求。当我尝试进行上传时,服务器没有响应请求并无限期地挂起而没有抛出错误或响应。之后,服务器停止响应任何请求。

在应该存储图像的目录中,我找到了一个“tmp”目录,其中包含2个图像,我上传的原始图像和“小”图像,让我觉得在第一次调整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

1 个答案:

答案 0 :(得分:0)

无法理解问题是什么,但我在unbuntu中尝试了这个并且它工作得很好,所以这是一个Windows问题。可能它与ImageMagick函数有关(几乎所有与图像宝石和窗口有关的问题......)。

虽然没有对问题进行任何解释,但我会将此答案标记为已解决。