我有一个 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
编辑:好的,所以当我手动运行部署命令时它工作正常;奇怪的是,尽管服务器的输出被分叉了,但它仍然被输出到终端,我想知道这是否是问题所在。损坏的管道是不再存在的终端(当通过厨师部署时),因此它正在破坏......也许?