0

Pumaの構成ファイルの例では、on_restart関数について次のようになっています。

再起動する前に実行するコード。このコードは、ログファイル、データベース接続などを閉じる必要があります。

Railsアプリにこれを実装して、データベースとログファイルへの接続を閉じる必要がありますか、それとも自動的に処理されますか?そうでない場合、実際にすべてを行うにはどうすればよいですか?

4

2 に答える 2

0

いいえ、そうではありません。Railsがコードの再読み込みを自動的に処理します。ただし、このコードの再読み込みのサポートには制限があります。たとえば、application.rbへの変更は、アプリサーバーを再起動するまで適用されません。

しかし、私はプーマよりもPhusionPassengerをお勧めします。Phusion Passengerは、特に本番環境に移行するときに、セットアップがはるかに簡単です。Phusion PassengerはApacheとNginxに直接統合され、動的ワーカー管理などの高度な機能を提供します。Phusion Passengerは非常に成熟していて、安定していてパフォーマンスが高く、New York Times、Symantec、AirBnBなどで使用されています。

于 2013-05-06T09:11:36.217 に答える
0

Rails.cacheプロバイダーとしてRedisを使用すると、Rails / Pumaサーバーが再起動されるたびに、最初のリクエストでエラーページが発生することがわかりました。私が得たエラーは次のとおりです。

Redis :: AliExpressError(再接続せずに子プロセスからの接続を使用しようとしました。フォークした後にRedisに再接続する必要があります。)

このエラーを回避するために、on_restartには何も追加しませんでしたが、 on_worker_bootにコードを追加する必要がありました (workers = 4でPumaを実行しています):

puma-config.rb

on_worker_boot do
    puts "Reconnecting Rails.cache"
    Rails.cache.reconnect
end
于 2014-04-01T03:00:31.053 に答える