Приложение Rails не может сохранить загруженные изображения в Amazon S3 с помощью Paperclip и Mongoid - PullRequest
3 голосов
/ 23 октября 2011

Я пытаюсь сохранить изображения, связанные с объектом Coupon, в экземпляре Amazon S3.В моем приложении Rails 3.1 для хранения документов используется Mongoid, и я не пытаюсь представить Paperclip (через mongoid-paperclip) для хранения изображений для купонов на Amazon S3.

Я создал группу разрешений на Amazon S3и добавил пользователя;действительные разрешения были добавлены в мое приложение (которое я могу проверить, потому что, если я удаляю или изменяю разрешения, я получаю сообщение об ошибке), но когда я пытаюсь сохранить файл, информация о файле сохраняется в базе данных, нофайл не загружен.Если я удаляю mongoid-paperclip из уравнения, файлы также не сохраняются локально (хотя я вижу, что они существуют во временной папке на моем локальном компьютере и обрабатываются с помощью ImageMagick).


Models

Мои Coupon объекты встраивают множество Image объектов как таковых:

class Coupon
  include Mongoid::Document
  include Mongoid::Timestamps

  # Relationships
  embeds_one :image, as: :imageable

  # Database Schema
  field :name
  field :description
  field :expires, type: Date

  # Validation
  validates :name, :description, :presence => true

end


class Image
  include Mongoid::Document
  include Mongoid::Paperclip
  include Mongoid::Timestamps

  # Relationships
  embedded_in :imageable, polymorphic: true
  has_mongoid_attached_file :file,
    :path           => ':id/:style.:extension',
    :storage        => :s3,
    :s3_credentials => File.join(Rails.root, 'config', 's3.yml'),
    :styles => {
      :original => ['920x920>', :jpg]
    }

end

Я не вижу выводов из Paperclip в моей консоли или журналах и не могу определить, как включитьтакой вывод.Единственная информация, записанная в отношении загружаемого файла, заключается в следующем, непосредственно перед перенаправлением страницы после успешного обновления атрибутов:

| Command :: identify -format %wx%h '/var/folders/ff/vxzlz741287dsr006bv2s59c0000gn/T/stream20111022-80997-o1pqk.png[0]'

| Command :: convert '/var/folders/ff/vxzlz741287dsr006bv2s59c0000gn/T/stream20111022-80997-o1pqk.png[0]' -resize "920x920>" '/var/folders/ff/vxzlz741287dsr006bv2s59c0000gn/T/stream20111022-80997-o1pqk20111022-80997-5z9phe.jpg'

Ответы [ 2 ]

0 голосов
/ 05 марта 2012

Может быть, этот код не использует обратные вызовы. Скрепка использует функцию обратного вызова after_save для сохранения изображения.

embeds_one :image, as: :imageable, cascade_callbacks: true 

Вы должны использовать каскадные обратные вызовы Mongoid. http://mongoid.org/en/mongoid/docs/callbacks.html

0 голосов
/ 21 декабря 2011

Кажется, это проблема с командой идентификации, предоставляемой вашей локальной установкой ImageMagick.У вас установлены библиотеки ImageMagick?Однажды у меня была похожая проблема, и кажется, что установка ImageMagick из Brew исправила ее.К вашему сведению: моя проблема была вызвана плохими символическими ссылками, команда идентификации (и другие) просто не была правильно связана с тем, когда я компилировал ImageMagick из источника.

...