2014-04-03 102 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

相關問題