Ruby on rails 是否有条件地忽略回形针中的s3\u主机\u别名?
我们使用cloudfront通过回形针在s3上托管图像;然而,它有一些积极的缓存,我们的部分代码需要新的数据(一些图像处理) 调用url时是否有任何方法覆盖s3\u主机\u别名 到目前为止,我在这个话题上发现的一切都是关于添加cloudfront,而不是忽略它;即便如此,一切都是全系统的 我们的回形针配置:Ruby on rails 是否有条件地忽略回形针中的s3\u主机\u别名?,ruby-on-rails,amazon-s3,paperclip,amazon-cloudfront,Ruby On Rails,Amazon S3,Paperclip,Amazon Cloudfront,我们使用cloudfront通过回形针在s3上托管图像;然而,它有一些积极的缓存,我们的部分代码需要新的数据(一些图像处理) 调用url时是否有任何方法覆盖s3\u主机\u别名 到目前为止,我在这个话题上发现的一切都是关于添加cloudfront,而不是忽略它;即便如此,一切都是全系统的 我们的回形针配置: # Paperclip Config Paperclip.options[:command_path] = "/usr/bin/" config.paperclip_defaults = {
# 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']
}
}
这可能很脏,但你可以试试这个
#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
#在控制器中设置值
Photo.my\u custom\u attr=“我的自定义值”
#在您的模型中
类照片
我也有同样的需求,所以我对回形针代码进行了一些挖掘,以下是我的发现:
s3存储模块仍然注册了您要查找的插值,只是在调用附件上的#url
时没有使用它,因为您可能已经在调用时设置了类似url:':s3\u alias\u url'
的内容,以便已附加了文件。因此,您可以通过调用手动使用回形针插补器
例如:
回形针::插值。插值(':s3\u路径\u url',User.first.avatar,:original)
您还可以替换s3模块为':s3\u path\u url'
定义的其他插值,例如':s3\u domain\u url'