2014-04-03 48 views
0

我使用carrierwave从我的rails应用程序上传图像,稍后将该图像传递给resque以在后台调整它们的大小。图像上传得当。当resque试图调整其大小的问题,mini_magick说:“没有这样的文件或目录”Imagemagick在Mac上没有这样的文件或目录错误

这是我的ImageController代码处理上载

#create image and embed into story 
def create 
    img_attr = params[:image] 
    img_attr[:media] = params[:image][:media].first if params[:image][:media].class == Array 

    image = Image.new img_attr 
    @story.images << image 
    if @story.save 
     Resque.enqueue(ImageQueue,image.id) 
     respond_to do |format| 
      format.json { 
       render :json => [image.to_jq_upload].to_json 
      } 
     end 
    else 
     render :json => [{:error => 'custom_failure'}], :status => 304 
    end 

end 

这是我Resque代码

class ImageQueue 
@queue = :image_queue 
def self.perform(image_id) 
    image = Image.find image_id 
    image.recreate_delayed_versions! 
    image.save 
end 
end 

而且上传路径在这里设置

def store_dir 
    "uploads/stories/#{model.viewable_id}/res" 
end 

这是错误堆栈我得到

No such file or directory - /uploads/stories/533d5b8756617390c0070000/res/636a8fe128.jpg 
/Users/skmvasu/.rvm/gems/ruby-2.0.0-p451/gems/mini_magick-3.7.0/lib/mini_magick/image.rb:110:in `initialize' 
/Users/skmvasu/.rvm/gems/ruby-2.0.0-p451/gems/mini_magick-3.7.0/lib/mini_magick/image.rb:110:in `open' 
/Users/skmvasu/.rvm/gems/ruby-2.0.0-p451/gems/mini_magick-3.7.0/lib/mini_magick/image.rb:110:in `open' 
/Users/skmvasu/repo/mangoweb/app/uploaders/image_uploader.rb:97:in `original_dimensions' 
/Users/skmvasu/.rvm/gems/ruby-2.0.0-p451/gems/carrierwave-0.10.0/lib/carrierwave/uploader/processing.rb:84:in `block in process!' 
/Users/skmvasu/.rvm/gems/ruby-2.0.0-p451/gems/carrierwave-0.10.0/lib/carrierwave/uploader/processing.rb:76:in `each' 
/Users/skmvasu/.rvm/gems/ruby-2.0.0-p451/gems/carrierwave-0.10.0/lib/carrierwave/uploader/processing.rb:76:in `process!' 

奇怪的是相同的代码工作在我的Linux机器,和我的生产箱也运行Linux操作系统,却没有关于我的新Mac。 ImageMagick有问题吗?我通过Homebrew安装它。我甚至尝试卸载它,然后用源代码重新安装它,但那也不起作用。

我不知道我在做什么错在这里?请帮我解决这个问题。

+1

这听起来像minimagick给你悲伤,而不是imagemagick本身。你会考虑使用'Rmagick'而不是minimagick吗? http://rmagick.rubyforge.org/这是一个很好的链接:http://blog.paulopoiati.com/2013/01/28/installing-rmagick-in-mac-os-x-mountain-lion-with-homebrew/ 在开发和生产机器上,我已经在osx和ubuntu上用rmagick取得了很大的成功。 Rmagick也完全兼容carrierwave。 – Starkers

回答

2

按照该错误,

No such file or directory - /uploads/stories/533d5b8756617390c0070000/res/636a8fe128.jpg 

要么636a8fe128.jpg是不存在于给定的路径,即,/uploads/stories/533d5b8756617390c0070000/res

/uploads/stories/533d5b8756617390c0070000/res的一个或全部在此路径中的目录的不存在。我会建议去终端,并浏览路径,看看它是否允许你改变目录,直到你到达res目录。如果是,则在res目录下执行ls -l并查看输出是否显示636a8fe128.jpg文件。

UPDATE

指定的全路径包括Rails.root

def store_dir 
    "#{Rails.root}/public/uploads/stories/#{model.viewable_id}/res" 
end 

而不#{Rails.root}/public/,产生的路径是/uploads/stories/533d5b8756617390c0070000/res/636a8fe128.jpg其中第一/指向的服务器的根目录下。

+0

不存在该文件存在那里。我已经证实了这一点。 – skmvasu

+0

让我们在聊天http://chat.stackoverflow.com/rooms/48530/ror上讨论它,因为它可能需要一点点的调试。 –

+0

其实这并没有奏效。 resque有一些问题,这个代码没有得到执行。即使有这个变化,它仍然会抛出相同的错误。对此感到抱歉。 – skmvasu

相关问题