2011-03-20 121 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