无法访问生产环境中Carrierwave版本上传的图片

时间:2014-10-24 02:27:21

标签: ruby-on-rails nginx carrierwave production

这是我的上传者:

class PhotoUploader < CarrierWave::Uploader::Base

  include CarrierWave::MiniMagick
  process :resize_to_fit => [nil, 600]

  version :thumb do
    process :resize_to_fill => [150,150]
  end

  # Choose what kind of storage to use for this uploader:
  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  def cache_dir
    "#{Rails.root}/tmp/uploads"
  end

  def extension_white_list
    %w(jpg jpeg gif png)
  end

  def filename
    if original_filename
      @name ||= Digest::MD5.hexdigest(current_path)
      "#{@name}.#{file.extension}"
    end
  end

end

production.rb中,我设置了 config.serve_static_assets = false

然后我使用Capistrano在生产服务器(Nginx + Passenger)上部署了这个项目。当我上传图片时,它会在/home/deploy/Gallary/current/public/uploads/picture/photo/目录下生成2个副本,如下所示: enter image description here

我可以通过浏览器访问第一个(因为这个是Carrierwave生成的默认文件),而第二个(由version :thumb生成)抛出异常就像这样:

ActionController::RoutingError (No route matches [GET] "/uploads/picture/photo/49/thumb_6d9596c7449d3714eadb74b9c71beec2.jpg")

实际上,这个文件thumb_6d9596c7449d3714eadb74b9c71beec2.jpg确实存在于那里。

那么,有什么不对?我该怎么办?

1 个答案:

答案 0 :(得分:0)

我有类似的问题。在另一个帖子中找到答案。 所以试试这个:

Server unable to find public folder in rails 3 production environment

为我工作