我们通过paperclip为s3上托管的图像使用cloudfront;但它有一些积极的缓存,我们的部分代码需要新数据(一些图像处理)。
在调用网址时是否有任何覆盖s3_host_alias
的方法?
到目前为止,我发现的有关此主题的所有内容都涉及添加 cloudfront,而不是忽略它;即便如此,一切都在全系统范围内。
我们的回形针配置:
# Paperclip Config
Paperclip.options[:command_path] = "/usr/bin/"
config.paperclip_defaults = {
storage: :s3,
s3_protocol: :https,
url: ':s3_alias_url',
default_url: "https://#{SETTINGS['s3']['bucket']}.s3.amazonaws.com/missing/:class/:attachment/:style.png",
s3_host_alias: SETTINGS['s3']['cdn_url'],
s3_credentials: {
bucket: SETTINGS['s3']['bucket'],
access_key_id: SETTINGS['s3']['access_key_id'],
secret_access_key: SETTINGS['s3']['secret_access_key']
}
}
答案 0 :(得分:0)
这可能很脏,但你可以尝试一下。
#set the value in your controller
Photo.my_custom_attr = "My custom value"
#In your model
class Photo < ActiveRecord::Base
cattr_accessor :my_custom_attr
Paperclip.interpolates :my_custom_attr do |attachment, style|
Photo.my_custom_attr
end
end
答案 1 :(得分:0)
我有同样的需要所以我做了一些挖掘回形针代码,这是我发现的:
s3存储模块仍然注册了您正在寻找的插值,当您在附件上调用#url
时,它不会被使用,因为您可能已经设置了类似{{1}的内容在您对url: ':s3_alias_url'
的通话中设置。因此,您可以通过调用interpolate手动使用Paperclip插值器。
例如:
has_attached_file
您还可以替换s3模块为Paperclip::Interpolations.interpolate(':s3_path_url', User.first.avatar, :original)
定义的其他插值,例如':s3_path_url'
。