Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是否有条件地忽略回形针中的s3\u主机\u别名?_Ruby On Rails_Amazon S3_Paperclip_Amazon Cloudfront - Fatal编程技术网

Ruby on rails 是否有条件地忽略回形针中的s3\u主机\u别名?

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 = {

我们使用cloudfront通过回形针在s3上托管图像;然而,它有一些积极的缓存,我们的部分代码需要新的数据(一些图像处理)

调用url时是否有任何方法覆盖s3\u主机\u别名

到目前为止,我在这个话题上发现的一切都是关于添加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']
  }
}

这可能很脏,但你可以试试这个

#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'