2011-03-01 50 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