2010-01-22 72 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寶石幫助我 - 你運行什麼版本?

相關問題