【发布时间】:2011-01-08 04:17:57
【问题描述】:
我有一个小型 Sinatra 应用程序,我在使用 Passenger 的共享主机帐户上运行。但是,一段时间后第一次访问该应用程序时,我收到一个乘客错误页面,提示该应用程序无法启动。通常是因为找不到 Sinatra。
我假设这只是产生新实例时的正常延迟。但是,有没有办法延迟尝试加载 Siantra 直到它的乘客完全加载?
【问题讨论】:
我有一个小型 Sinatra 应用程序,我在使用 Passenger 的共享主机帐户上运行。但是,一段时间后第一次访问该应用程序时,我收到一个乘客错误页面,提示该应用程序无法启动。通常是因为找不到 Sinatra。
我假设这只是产生新实例时的正常延迟。但是,有没有办法延迟尝试加载 Siantra 直到它的乘客完全加载?
【问题讨论】:
很久以前我有a similar problem。更新到较新的 Sinatra gem 对我有帮助 - 您正在运行什么版本?
【讨论】:
我认为您可能需要添加 Gem.clear_paths!在里面
【讨论】:
我最近接受了 Dreamhost 支持(不是很好的体验),最终他们建议将 gem 冻结到应用程序中。这充其量只是一个部分解决方案,因为它似乎适用于某些宝石而不适用于其他宝石。
代替
require 'sinatra'
我有:
require 'vendor/gems/sinatra-0.9.4/lib/sinatra'
冻结宝石在其他地方有所介绍,但简要说明:为此做好准备,需要做
mkdir vendor/gems
cd vendor/gems
gem unpack sinatra
由于此更改,我从未收到启动失败屏幕,将 sinatra 引用为无法加载的文件。但是,对于一些需要自身或其他宝石的一部分的其他宝石,我仍然可以使用它。不太清楚细节,但我正在研究破解已安装的 gem 以使每个“要求”直接使用我的“供应商”库中的路径。
【讨论】:
我似乎通过在 .htaccess 文件中设置 GEMS_PATH 环境变量解决了这个问题。我没有再次遇到错误。还!
【讨论】: