2012-02-28 46 views
0

我試圖從瀏覽器上傳文件,然後從中創建一個縮略圖,然後上傳到s3。RMagick - S3 - Heroku,RMagick文件出現問題打開

File.open(params[:file][:tempfile]) do |p| 
     AWS::S3::Base.establish_connection!(
      :access_key_id  => settings.s3_key, 
      :secret_access_key => settings.s3_secret) 
     AWS::S3::S3Object.store(pic_name,p,settings.bucket,:access => :public_read) 

     thumb = Magick::Image.read(p) 
     thumb.crop_resized!(75, 75, Magick::NorthGravity) 

     AWS::S3::Base.establish_connection!(
      :access_key_id  => settings.s3_key, 
      :secret_access_key => settings.s3_secret) 
     AWS::S3::S3Object.store(pic_name + "s",thumb,settings.bucket,:access => :public_read) 

我已經試過最可能的代碼組合,使其工作,但它給了我一個分割錯誤

c:0060 p:---- s:0261 b:0261 l:000260 d:000260 CFUNC :read 
c:0059 p:0117 s:0257 b:0257 l:002638 d:000256 BLOCK /Users/gkay/Documents/yirmiyedi/web/banne/app/controllers/firsat.rb:33 
c:0058 p:---- s:0253 b:0253 l:000252 d:000252 FINISH 
c:0057 p:---- s:0251 b:0251 l:000250 d:000250 CFUNC :open 
c:0056 p:0190 s:0247 b:0247 l:002638 d:000246 LAMBDA /Users/gkay/Documents/yirmiyedi/web/banne/app/controllers/firsat.rb:27 

時RMagic試圖打開該文件,以便啓動。我已經嘗試了很多東西,如

thumb = Magick::Image.read(p).first or [0] etc but none of them worked. 

任何想法? PARAMS [:文件]是後PARAM這使文件

回答

1

我建議使用Mini Magick代替 - 它使用更少的內存而且它的小車更少。我們在RMagick上遇到了很多問題,但沒有一個是迷你magick。從一個切換到另一個非常容易。

+0

它是否適用於heroku? – gkaykck 2012-02-28 09:45:38

+0

是的,它的確如此。我們在部署在Heroku上的幾個項目中使用它。 – 2012-02-28 10:46:23

0

嘗試增加

GC.start 

在你的代碼的頂部

0

問題解決了,當我卸載imagemagick,卸載rmagick寶石,安裝imagemagick沒有openmp,然後再安裝rmagick寶石。

+1

據瞭解,這是ImageMagick的OSX特定構建問題。它不應該影響heroku部署。 – 2012-02-28 10:47:25

+0

我這麼認爲,開始討厭我的Mac – gkaykck 2012-02-28 11:04:58

0

對於任何新訪問者,ImageMagick目前在沒有RMagick的情況下在Heroku上工作,所以不需要將它包含在你的gemfile中。

但是,如果您使用回形針,則需要指定gem 'cocaine', '0.3.2',如post中所述,因爲其他一些版本不起作用。