为什么使用 Rack 和 Phusion Passenger 重新启动 Sinatra 应用程序后第一个请求会出现错误?
题
在我触摸 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
不隶属于 StackOverflow