私はsinatraアプリを持っています.本番環境で実行すると、おかしな動作をします.
最初のリクエストが機能し、アセットがダウンロードされ、ページが読み込まれます。ただし、ページを更新すると、リクエストが停止するだけで、ログ ファイルには何も記録されません。
私はsinatra-asset-packで実行しており、開始する前にアセットをプリコンパイルしました。
コードを投稿しますが、問題を解決するために何が必要かわかりません
編集: 自分のボックスでは問題なく動作しますが、vagrant を使用して VM にデプロイすると、運用モードでは停止しますが、開発モードでは問題ありません。
編集:このエラーを吐き出すことができました:
Errno::EPIPE 壊れたパイプ @ io_write -
そしてそれをアクションに絞り込みますが、アクションにコードを投稿しても何もログアウトされず、アクションの最初の行はログ記録アクションであるため、アクションがまったく実行されるかどうかわかりません。問題が発生した後にログが追加されたので、それが何であれ、それはないと思います。
編集: エラーは実際にここで発生します (sinatra の base.rb(1144):
1142 def dump_errors!(boom)
1143 msg = ["#{Time.now.strftime("%Y-%m-%d %H:%M:%S")} - #{boom.class} - #{boom.message}:", *boom.backtrace].join("\n\t")
1144 @env['rack.errors'].puts(msg)
1145 end
編集:わかりました。配置コマンドを手動で実行すると、正常に動作します。奇妙なことに、フォークされているにもかかわらず、サーバーからの出力がまだ端末に出力されています。それが問題なのだろうか。壊れたパイプは、もはや存在しない端末であり (chef を介してデプロイされた場合)、そのため壊れています...多分?