2011-03-01 52 views
2

我有一個自定義初始值設定項,用於配置「雲」存儲提供程序(Google,AWS,Rackspace)。我正在創建一個應用程序,我希望可以由各種開發人員部署(使用不同的存儲提供程序),我希望能夠單獨測試每個雲提供商。目前,我在執行rake test之前,先通過我的初始化文件三次並評論/取消註釋每個提供商。是否有可能通過一個選項rake test,然後我可以在我的初始化程序中使用控制流(即加載特定的初始化程序)?喜歡的東西:導軌測試的自定義初始化變量

rake test --attached aws 
rake test --attached google 
rake test --attached rackspace 

這裏是我的初始化的樣子:

# config/initializers/attached.rb 

Attached::Attachment.options[:medium] = :aws 
Attached::Attachment.options[:credentials] = "#{Rails.root}/config/aws.yml" 

Attached::Attachment.options[:medium] = :google 
Attached::Attachment.options[:credentials] = "#{Rails.root}/config/google.yml" 

Attached::Attachment.options[:medium] = :rackspace 
Attached::Attachment.options[:credentials] = "#{Rails.root}/config/rackspace.yml" 

謝謝!

回答

2

我會推薦使用env-vars。

$ ATTACHED="aws" rake test 

然後

# config/initializers/attached.rb 

attached = ENV['ATTACHED'] || "aws" 

case attached 
when "aws" 
    Attached::Attachment.options[:medium] = :aws 
    Attached::Attachment.options[:credentials] = "#{Rails.root}/config/aws.yml" 
... 
+0

謝謝!你知道是否可以爲一次執行指定一個環境變量? – 2011-03-05 17:39:16

+0

上面的示例僅適用於單個執行。 – 2011-03-05 17:41:57

+0

謝謝!你是搖滾明星!這正是我需要的! – 2011-03-05 17:43:48