【问题标题】:Rails App Failing to Save Image Uploads to Amazon S3 Using Paperclip and MongoidRails 应用程序无法使用 Paperclip 和 Mongoid 将图像上传保存到 Amazon S3
【发布时间】:2011-12-13 07:45:01
【问题描述】:

我正在尝试将与 Coupon 对象关联的图像存储在 Amazon S3 实例中。我的 Rails 3.1 应用程序使用 Mongoid 存储文档,我并没有尝试引入 Paperclip(通过 mongoid-paperclip)来存储 Amazon S3 上的优惠券图像。

我在 Amazon S3 上创建了一个权限组并添加了一个用户;有效权限已添加到我的应用程序(我可以验证,因为如果我删除或更改权限,我会收到错误),但是当我尝试保存文件时,文件的信息存储在数据库中,但是文件未上传。如果我从等式中删除 mongoid-paperclip,文件也不会存储在本地(尽管我确实看到它们存在于我本地机器上的临时文件夹中并通过 ImageMagick 处理)。


型号

我的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'

【问题讨论】:

    标签: ruby-on-rails amazon-s3 paperclip mongoid


    【解决方案1】:

    这似乎是您本地 ImageMagick 安装提供的识别命令的问题。你的系统上安装了 ImageMagick 的库吗?我曾经遇到过类似的问题,似乎从 brew 安装 ImageMagick 修复了它。仅供参考:我的问题是由错误的符号链接引起的,从我从源代码编译 ImageMagick 时,识别命令(和其他命令)根本没有正确链接。

    【讨论】:

      【解决方案2】:

      也许,这段代码没有使用回调。 Paperclip 使用 after_save 的回调来保存图片。

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

      您应该使用 Mongoid 的级联回调。 http://mongoid.org/en/mongoid/docs/callbacks.html

      【讨论】:

        猜你喜欢
        • 2015-03-10
        • 2015-12-10
        • 2013-12-20
        • 1970-01-01
        • 2014-10-23
        • 1970-01-01
        • 2014-12-19
        • 1970-01-01
        • 2015-10-01
        相关资源
        最近更新 更多