2012-02-28 69 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中所述,因为其他一些版本不起作用。