1

我们正在使用捆绑器,并且在部署服务器应用程序时安装了一些 gem

bundler install --without test

在这种情况下,应该停用一些代码(例如将 rspec && cucumber 任务加载到 Rakefile 中)

有没有一些简单的方法,比如Bundler.installed?(:test)то 检测这种情况?

4

1 回答 1

1

您基本上要做的是将您的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

我希望这有帮助。

于 2012-07-06T10:34:32.847 回答