我正在尝试在带有雾宝石的aws-s3上托管我的网站,其中有回形针附件图像。但我的雾目录采用了错误的路径,但它附加了我的本地文件系统路径。
这是我的代码
class RealEstate < ActiveRecord::Base
has_attached_file :image,
:storage => :fog,
:fog_credentials => "#{Rails.root}/config/s3.yml",
:fog_directory => "#{Rails.root}/config/fog.yml"
end
如果我在此定义存储桶名称,那么它会起作用但是它将无法使用不同的存储桶用于不同的环境
:fog_directory => "development_bucket_name" #works fine but cant use different bucket for different env
这是我的fog.yml
development:
fog_directory: development_bucket
staging:
fog_directory: testing_bucket
production:
fog_directory: production_bucket
它创建的路径是:
https://s3.amazonaws.com//home/Desktop//config/fog.yml/real_estate/image/000/000/185/original/4bec7.png?1396429186
答案 0 :(得分:1)
Paperclip不知道您传递的字符串是配置文件的路径 - 它期望实际的存储桶名称。
您需要解析yaml文件并从中提取存储桶名称。例如
directories = YAML.load(File.read(Rails.root.join('config', 'fog.yml')))
has_attached_file :image,
:storage => :fog,
:fog_credentials => "#{Rails.root}/config/s3.yml",
:fog_directory => directories[Rails.env]['fog_directory']