我们正在使用捆绑器,并且在部署服务器应用程序时安装了一些 gem
bundler install --without test
在这种情况下,应该停用一些代码(例如将 rspec && cucumber 任务加载到 Rakefile 中)
有没有一些简单的方法,比如Bundler.installed?(:test)
то 检测这种情况?
您基本上要做的是将您的production
环境与您的development
(或test
)环境区分开来。您不应该为此依赖已安装的 gem,但 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
我希望这有帮助。