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

时间:2009-02-24 15:33:25

标签: sinatra passenger rack phusion

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

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

这是我的config.ru:

require 'rubygems'
require 'sinatra'

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

require 'app.rb'
run Sinatra::Application

2 个答案:

答案 0 :(得分:2)

我会考虑确保你需要所有必要的宝石。或许有一些关于你正在做的命令,导致它第一次失败。您需要rubygems吗?

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

答案 1 :(得分:1)

错误是由Sinatra宝石加载太迟造成的。这是解决方案:


#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