为什么使用 Rack 和 Phusion Passenger 重新启动 Sinatra 应用程序后第一个请求会出现错误?

StackOverflow https://stackoverflow.com/questions/582201

在我触摸 tmp/restart.txt 并且我的应用程序重新启动后,第一个请求会抛出错误,通常是关于找不到 Haml::Engine 或其他一些 gem 的错误。第二个和后续请求都工作正常。我在运行 Rack 0.4.1 和 Sinatra 0.3.3 的 Dreamhost 上遇到了这个问题,但在转移到我自己的主机并运行更新的 Rack (0.9.1) 和 Sinatra (0.9.0.4) 后,我仍然看到这个问题。

如果您不知道确切的答案,但有关于如何找到答案的提示,请告诉我。

这是我的 config.ru:

require 'rubygems'
require 'sinatra'

disable :run
set :environment, :production
set :raise_errors, true

require 'app.rb'
run Sinatra::Application
有帮助吗?

解决方案

我会考虑确保您需要所有必要的宝石。也许您执行此操作的顺序有一些问题导致它第一次失败。您是否需要 rubygems?

如果您发布了应用程序的机架配置,它也可能会有所帮助(config.ru).

其他提示

在错误是由屈宝石装载来不及引起的。这是解决方案:

#config.ru

ENV['GEM_HOME'] ||= `gem env path`.strip.split(':').first
ENV['GEM_PATH'] ||= `gem env path`.strip
Gem.clear_paths

require 'application-filename-goes-here'
set :environment, :production
run Sinatra::Application
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top