1
我们使用捆绑,并在部署服务器应用程序没有一些宝石检测捆绑安装组
bundler install --without test
在这种情况下,一些代码应停用安装(如装载rspec的& &黄瓜任务到Rake文件)
是否有一些简单的方法,如Bundler.installed?(:test)
检测到这种情况?
我们使用捆绑,并在部署服务器应用程序没有一些宝石检测捆绑安装组
bundler install --without test
在这种情况下,一些代码应停用安装(如装载rspec的& &黄瓜任务到Rake文件)
是否有一些简单的方法,如Bundler.installed?(:test)
检测到这种情况?
你基本上试图做的是将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
我希望这有助于。
嗯,解决方案很明确,但我们有一堆环境,有时会发生变化,我宁愿不依赖它。不管怎样,谢谢 :) – Meredian 2012-07-06 12:51:50