RMagick - S3 - Heroku, проблемы с открытым файлом RMagick - PullRequest
0 голосов
/ 28 февраля 2012

Я пытаюсь загрузить файл из браузера, затем сделать из него один эскиз, а затем загрузить оба файла на s3.

 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 [: file] - это пост-парам, который хранит файл

Ответы [ 4 ]

1 голос
/ 28 февраля 2012

Я бы предложил вместо этого использовать Mini Magick - он использует намного меньше памяти и намного меньше глючит. У нас было много проблем с RMagick, но ни одной проблемы с мини-магией. А переключаться с одного на другой очень легко.

0 голосов
/ 16 октября 2012

Для любых новых посетителей ImageMagick в настоящее время работает на Heroku без RMagick, поэтому нет необходимости включать его в свой gemfile.

Однако, если вы используете Paperclip, вам нужно указать gem 'cocaine', '0.3.2', как отмечено в этом посте , так как некоторые другие версии не работают.

0 голосов
/ 28 февраля 2012

Проблема была решена, когда я удалил imagemagick, удалил гем rmagick, установил imagemagick без openmp, затем снова установил гем rmagick.

0 голосов
/ 28 февраля 2012

Попробуйте добавить

GC.start

Вверху вашего кода

...