2012-07-06 178 views
1

我们使用捆绑,并在部署服务器应用程序没有一些宝石检测捆绑安装组

bundler install --without test 

在这种情况下,一些代码应停用安装(如装载rspec的& &黄瓜任务到Rake文件)

是否有一些简单的方法,如Bundler.installed?(:test)检测到这种情况?

回答

1

你基本上试图做的是将production环境与development(或test)环境区分开来。您不应该依赖已安装的宝石,但Bundler组仍然可以使用。

我会推荐使用环境变量,例如像在Rails中。然后,你可以在你的服务器配置与

$ export MYAPP_ENV='production' 

设置此变种并将其加载到用默认值:test您的应用程序:

MYAPP_ENV = ENV['MYAPP_ENV'].to_sym || :test 

这样,你总是可以告诉你,如果是在生产服务器。假设你的Gemfile看起来是这样的:

source :rubygems 

gem "sinatra" 

group :test do 
    gem "rspec" 
    gem "faker" 
end 

然后,您可以只需要与

Bundler.require(MYAPP_ENV) 

回到你原来的问题相关的宝石:现在是很容易检查,如果你对你的产品机器与否,通过简单地再次使用MYAPP_ENV

if MYAPP_ENV == :test 
    # do some test specific stuff 
end 

我希望这有助于。

+0

嗯,解决方案很明确,但我们有一堆环境,有时会发生变化,我宁愿不依赖它。不管怎样,谢谢 :) – Meredian 2012-07-06 12:51:50