我正在尝试将与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'
答案 0 :(得分:0)
这似乎是您本地ImageMagick安装提供的identify命令的问题。您的系统上是否安装了ImageMagick库?我有一个类似的问题,似乎从brew安装ImageMagick修复它。仅供参考:我的问题是由错误的符号链接引起的,当我从源代码编译ImageMagick时,识别命令(和其他命令)根本没有正确链接。
答案 1 :(得分:0)
也许,这段代码没有使用回调。 Paperclip使用after_save的回调来保存图像。
embeds_one :image, as: :imageable, cascade_callbacks: true
你应该使用Mongoid的级联回调。 http://mongoid.org/en/mongoid/docs/callbacks.html