2014-04-16 37 views
0

我想承載我的網站上有霧化寶石aws-s3回形針附件圖像。但我的霧目錄採用了錯誤的路徑,但它附加了我的本地文件系統路徑。霧目錄附加本地系統路徑與亞馬遜的網址,當託管圖像到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 

,如果我在這裏定義桶名存實亡那麼它會工作,但那就不是能夠使用不同的桶不同的Env

: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

是Greame我做了,當我在模型中定義桶名稱一切正常。 :fog_directory =>「development_bucket_name」,但然後我不能爲不同的env定義不同的桶。 – Prem

+0

什麼是fog_directory?圖像上傳到哪裏?存儲在哪裏?在測試環境中......它應該是什麼?它是否需要存在? – Jwan622

+0

fog_credentials中的asset_host和fog_directory有什麼區別? – Jwan622

回答

1

回形針不知道你傳遞的字符串是一個配置文件的路徑 - 它期待着實際的存儲桶名稱。

您需要解析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'] 
相關問題