2011-03-20 124 views
20

本地和文件系統使用亞馬遜我不知道如何配置環境,使得本地(開發)運行應用程序時,載波將使用本地文件存儲和S3後,我加載到的Heroku(生產)配置環境,在Heroku

在開發存儲

:文件

在生產存儲:S3

回答

23

無論是哪種型號,或者你可以全局設置它。必須在https://github.com/jnicklas/carrierwave/tree/v0.5.2

接近底部看看自述v0.5.2(目前創業板),也有用於配置測試環境的一些指令。使用相同的方法對「開發」和「生產」使用不同的配置,例如文件 「carrierwave.rb」 添加到 「配置/ initialisers」 和添加配置代碼

if Rails.env.test? or Rails.env.cucumber? 
    CarrierWave.configure do |config| 
    config.storage = :file 
    config.enable_processing = false 
    end 
end 

和發展

if Rails.env.development? 
    CarrierWave.configure do |config| 
    config.storage = :file 
    end 
end 

和生產

if Rails.env.production? 
    CarrierWave.configure do |config| 
    config.storage = :s3 
    end 
end 
+1

我在哪個文件中加入了這段代碼? Development.rb? 我把它放在development.rb,我收到一條錯誤消息不能轉換成符號整數,當我試圖訪問avatar.url? – user663778 2011-03-20 22:15:29

+2

我會把它放進「配置/初始化/ carrierwave.rb」(創建一個新的文件)。 – juwalter 2011-03-21 07:36:06

1

我猜這是在模型中設置的地方。你可以做類似

if Rails.env.production? 
    // set production 
else 
    // set dev/test 
end 
+0

感謝。我應該在初始化方法中添加此代碼嗎? – user663778 2011-03-20 20:18:13

7

最簡單的方法,我通常做是通過上傳器。

class CoverUploader < CarrierWave::Uploader::Base 
    # Choose what kind of storage to use for this uploader: 
    storage (Rails.env.production? ? :fog : :file) 
end 
+0

感謝您的簡潔的一個班輪。這似乎是一個更好的地方(在上傳者)做出這個基於環境的存儲決定。就我而言,我只需要在我的一個上傳者中進行區分。 – 2016-10-05 14:09:02