2010-01-22 68 views
2

我有一个小型的Sinatra应用程序,我在使用Passenger的共享主机帐户上运行。但是,一段时间后第一次访问应用程序,我得到一个Passenger错误页面,表示应用程序无法启动。通常是因为Sinatra找不到。Sinatra on Passenger总是在第一次尝试时失败

我假设这只是从新实例产生时的正常延迟。但是,有没有办法延迟尝试加载Siantra直到Passenger完全加载?

回答

0

我似乎已经通过在.htaccess文件中设置GEMS_PATH环境变量解决了该问题。我还没有再次遇到错误。然而!

+0

它是一个dreamhost帐户? – 2010-01-26 12:39:07

+0

编号Site5。说实话,这种方法也没有工作。我迄今为止发现的唯一解决方案是设置一个cron作业,每5分钟访问一次该站点,以保持乘客实例的活跃。有点黑客,但它似乎工作。 – fatnic 2010-01-26 19:12:53

0

最近我接受了Dreamhost的支持(不是很棒的体验),最终他们推荐将宝石冻结到应用程序中。这至多是部分解决方案,因为它似乎适用于某些宝石,而不适用于其他宝石。

而不是

require 'sinatra' 

我:

require 'vendor/gems/sinatra-0.9.4/lib/sinatra' 

冰冻的宝石在其他地方覆盖,但简要地说:为此作准备,需要做的

mkdir vendor/gems 
cd vendor/gems 
gem unpack sinatra 

作为这种变化的结果,我从来没有得到启动失败的碎石ñ引用sinatra作为它无法加载的文件。不过,我仍然会为其他一些需要自己或其他宝石的宝石获得它。对细节不太清楚,但我正在研究黑客安装的宝石,让每个“需求”直接使用我的“供应商”库中的路径。

0

我想你可能需要添加Gem.clear_paths!在那里

0

很久以前我有a similar problem。更新到一个新的Sinatra宝石帮助我 - 你运行什么版本?

相关问题