gpt4 book ai didi

ruby-on-rails-4 - Rails 4 - 将 cloudfront 与 Paperclip 一起使用

转载 作者:行者123 更新时间:2023-12-04 00:11:02 34 4
gpt4 key购买 nike

我有一个已经在 S3 上运行(在登台和生产中)的应用程序。
现在我们希望它与 cloudfront 一起使用。

我发现由于某种原因,我在两个地方有回形针定义:

/confog/initializers/paperclip.rb:

if Rails.env.production? || Rails.env.staging? || true
Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename'
end

/config/environments/staging.rb /config/environments/production.rb
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => s3_options[:bucket],
:access_key_id => s3_options[:access_key_id],
:secret_access_key => s3_options[:secret_access_key]
}
}

(我从 s3.yml 加载 s3_options 我拥有的文件)

第一个问题 - 是否有必要(或另一方面 - 是错误的)在这两个地方进行配置?

有了这个配置,我得到了这个:
> Profile.last.image.url
=> "https://mybucket.s3.amazonaws.com/profiles/images/000/000/001/original/someimage.jpg?1439912576"

我的目标:
获取 cloundfront url 而不是 s3。

我尝试了几件事:
  • 添加到 回形针.rb 这一行:
    Paperclip::Attachment.default_options[:s3_host_alias]  = "xxxxx.cloudfront.net"

    (其中 xxxxx 代表 cloudfront 哈希)。
    结果:什么都没有改变。
  • 添加到 回形针.rb 这一行:
    Paperclip::Attachment.default_options[:s3_host_name]  = "xxxxx.cloudfront.net"

    (其中 xxxxx 代表 cloudfront 哈希)。
    结果:回形针连接存储桶名称 之前 它:
    > Profile.last.image.url
    => "https://mybucket.xxxxx.cloudfront.net/profiles/images/000/000/001/original/someimage.jpg?1439912576"
  • 中禁用配置回形针.rb 并将这些行添加到环境配置文件中(我在 development.rb 上试过):
    config.paperclip_defaults = {
    :
    :s3_credentials => {
    :
    :
    :url => "xxxxx.cloudfront.net",
    :s3_host_name => "xxxxx.cloudfront.net",
    :path => '/:class/:attachment/:id_partition/:style/:filename',
    }
    }

    结果:回形针连接存储桶名称 它:
    > Profile.last.image.url
    => "https://xxxxx.cloudfront.net/mybucket/profiles/images/000/000/001/original/someimage.jpg?1439912576"
  • 同 (3) 一样,但将这些行添加到更高一级:
    config.paperclip_defaults = {
    :storage => :s3,
    :url => "xxxxx.cloudfront.net",
    :s3_host_name => "xxxxx.cloudfront.net",
    :path => '/:class/:attachment/:id_partition/:style/:filename',
    :s3_credentials => {
    :
    :
    }
    }

    结果:与 (3) 相同。

  • 简而言之,无论我输入什么 :s3_host_name , 回形针在某处连接桶名称 .

    有什么想法?

    最佳答案

    这比我想象的要容易。
    看起来像回形针用 :url作为字符串或作为指示如何构造 url 的符号的引用。

    在我的 /config/environments/staging.rb /config/environments/production.rb 我现在拥有的文件:

    config.paperclip_defaults = {
    :storage => :s3,
    :url => ':s3_alias_url',
    :s3_host_alias => "xxxxx.cloudfront.net",
    :path => '/:class/:attachment/:id_partition/:style/:filename',
    :s3_credentials => {
    :
    :
    }
    }

    关于ruby-on-rails-4 - Rails 4 - 将 cloudfront 与 Paperclip 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32077746/

    34 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com