そのため、Rack 上で Sinatra アプリを実行している実稼働マシンがいくつかあります。Puppet (サーバーに変更を同期するために使用している) がプロジェクトの Gemfile.lock が変更されたことに気づき、その結果、bundle install --binstubs --deployment
新しい gem を取得するためにコマンドを発行する必要があるまで、通常はすべてが面倒です。これが発生すると、新しい gem がまだインストールされていないため、Bundler を呼び出して gem を要求するときに、すべての http リクエストで 500 エラーが発生します。
通常、サーバーが稼働していることを確認するために定期的に http 要求を行う別のプロセスのために、少なくとも 1 つの Rack プロセスがぶら下がっていますが、これが発生すると、稼働中の Rack プロセスはありません。問題が新しいインスタンスにあった場合、ディレクティブが役立つように思えPassengerMinInstances
ますが、定期的にページを取得してサーバーがまだ稼働していることをテストするプロセスもあるため、リクエストを処理するために少なくとも 1 つの Rack プロセスが生きている必要があります。 .
touch
puppet は、( restart.txt ファイルを ing することによって) 実際に Rack を再起動するまでは (restart.txt ファイルを使用しbundle install
て) 完了しないことに注意してください。誰もこのようなことに遭遇しましたか?私が見落としたすべてのリクエストで環境全体をリロードしないためのラックオプションはありますか?