Paperclip S3时间戳插值是一秒钟关闭?

时间:2015-04-11 02:56:27

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

我使用Paperclip使用S3存储在Cloudfront并随Paperclip传递的附件的Rails应用程序遇到了一些麻烦。我已使用时间戳插值配置if configatron.aws.enabled Paperclip::Attachment.default_options[:storage] = :s3 Paperclip::Attachment.default_options[:s3_credentials] = { access_key_id: configatron.aws.access_key, secret_access_key: configatron.aws.secret_key } Paperclip::Attachment.default_options[:protocol] = 'https' Paperclip::Attachment.default_options[:bucket] = configatron.aws.bucket Paperclip::Attachment.default_options[:s3_host_alias] = configatron.aws.cloudfront_host Paperclip::Attachment.default_options[:url] = ":s3_alias_url" # Change the default path Paperclip::Attachment.default_options[:path] = "images/:class/:attachment/:id_partition/:style-:timestamp-:filename" Paperclip.interpolates(:timestamp) do |attachment, style| attachment.instance_read(:updated_at).to_i end end 。一切都按预期在暂存环境中工作。但是,在生产中,存储的实际文件名使用的时间戳为一秒钟。我不知道为什么......

回形针配置

> alumni = Alumni.last
> alumni.updated_at.to_i
 => 1428719699
> alumni.thumb.url
 => "http://d2kektcjb0ajja.cloudfront.net/images/alumnis/thumbs/000/000/664/original-1428719699-diana-zeng-image.jpg?1428719699"

示例记录

IRB

请注意,在上述updated_at会话中,filename时间戳与S3上的时间戳匹配,这是正确的。但是,实际存储在thumb-1428719698-diana-zeng-image.jpg中的文件是{{1}},请注意时间戳是1秒钟!这意味着找不到上述URL。

这只发生在制作上。在我们的临时环境中,它完美运行。我不知道为什么会发生这种情况。

有人可以帮忙吗?

谢谢!

伦纳德

1 个答案:

答案 0 :(得分:0)

通过将Rails升级到> = 4.2.1。

来解决

问题是Rails 4.2.0保留了小数秒,导致漂移发生,因为四舍五入到最接近的秒。

https://github.com/thoughtbot/paperclip/issues/1772