バンドラーを使用しており、デプロイ時にサーバー アプリケーションがいくつかの 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
これが役立つことを願っています。