纸夹与Imagemagick,Amazon S3和Heroku - Imagemagick和S3可用,但纸夹字段未在数据库中设置。在开发中正常工作。

3

我在我的应用程序中使用Paperclip和Imagemagick,并使用Amazon S3进行存储。在开发环境下一切正常。但是在Heroku上的生产环境中,它无法正常工作。

图片被上传到Amazon S3,缩略图创建也可以工作,因此Paperclip、Imagemagick和S3的组合部分是正常工作的。但由于某种原因,Paperclip特定的模型字段没有被填充:

imagestore_file_name: 
imagestore_content_type: 
imagestore_file_size: 
imagestore_updated_at: 

在开发中,这些都被填充了,但在Heroku的生产环境中并没有。当我尝试在生产应用程序(Heroku)中显示图像时,它会显示图像丢失,尽管它在S3中绝对存在。是什么导致了这个错误?谢谢阅读。
详情:
ruby 1.8.7
Rails 3.0.1
Stack: bamboo-mri-1.9.2

编辑:

这是一个类。Image类继承自Media类,而Media类又继承自ActiveRecord::Base。

class Image < Media

  attr_accessor :imagestore_file_name
  attr_accessor :imagestore_content_type
  attr_accessor :imagestore_file_size
  attr_accessor :imagestore_updated_at


    has_attached_file :imagestore, 
        :storage => :s3, 
        :s3_credentials => "#{RAILS_ROOT}/config/amazon_s3.yml", 
        :path => "/:style/:filename",
        :styles => { :medium => "800", :thumb => "150" }


end

这里是相关的Heroku日志(我认为是的,有时在Heroku上很难确定)。
Parameters: {"authenticity_token"=>"a9+UnIlVH5HRetoN45IlGlGYoeEkpqQ1Qskpe4EGuHw=", "media_input"=>"", "imagestore"=>#<File:/home/slugs/44ca6411-6e76-4e7d-8239-a956dc3979c0/mnt/tmp/RackMultipart20110110-17158-10fuv0p>, "type"=>"uber", "name"=>"Star Wars", "detail"=>""}
[paperclip] identify -format %wx%h '/home/slugs/44ca6411-6e76-4e7d-8239-a956dc3979c0/mnt/tmp/stream20110110-17158-1uyk3if.jpg[0]' 2>/dev/null
[paperclip] convert '/home/slugs/44ca6411-6e76-4e7d-8239-a956dc3979c0/mnt/tmp/stream20110110-17158-1uyk3if.jpg[0]' -resize "800" '/home/slugs/44ca6411-6e76-4e7d-8239-a956dc3979c0/mnt/tmp/stream20110110-17158-1uyk3if20110110-17158-ta9egy' 2>/dev/null
[paperclip] identify -format %wx%h '/home/slugs/44ca6411-6e76-4e7d-8239-a956dc3979c0/mnt/tmp/stream20110110-17158-1uyk3if.jpg[0]' 2>/dev/null
[paperclip] convert '/home/slugs/44ca6411-6e76-4e7d-8239-a956dc3979c0/mnt/tmp/stream20110110-17158-1uyk3if.jpg[0]' -resize "150" '/home/slugs/44ca6411-6e76-4e7d-8239-a956dc3979c0/mnt/tmp/stream20110110-17158-1uyk3if20110110-17158-13448fs' 2>/dev/null
[paperclip] Saving attachments.
[paperclip] saving /original/starWarsart2.jpg
[paperclip] saving /medium/starWarsart2.jpg
[paperclip] saving /thumb/starWarsart2.jpg
[paperclip] Saving attachments.
Redirected to !!my site url is here!!
Completed 302 Found in 1029ms

以下是创建的Image记录相关字段:
  imagestore_file_name: 
  imagestore_content_type: 
  imagestore_file_size: 
  imagestore_updated_at:

在开发中,这些字段有数据并且我能够加载图片。但是在生产环境中却不能。感谢您的帮助。


我自己没有遇到过类似的情况,所以不能确定,但是您是否确保在生产和开发中使用不同的S3存储桶?否则,您可以包含保存Paperclip附件的模型代码吗?并且,如果您实际尝试上传图像时能够查看日志文件,那将有助于解决问题。 - DanneManne
抱歉,一开始应该就包含了这个。我已经将其编辑到问题中。感谢您的帮助。 - ben
你能在开发环境中完成它,但在生产模式下运行服务器吗? - Aditya Sanghi
1个回答

4

我认为问题在于你对paperclip属性指定了attr_accessor。这是不必要的。当我向我的模型添加这些行时,我遇到了与你相同的问题。因此,只需删除那些行就足够了。


就是这样。我在某个地方读到过你必须这样做,但我想不是这样。非常感谢您的帮助,非常感激! - ben

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接