我有一個rails應用程序,我使用Rails 2.3.5在Windows上開發,使用sqlite3作爲我的數據庫引擎,內部Mongrel服務器作爲我的web服務器。部署凍結Rails應用程序時出現問題 - 「找不到RubyGem機架」
我將這個應用程序部署到運行Rails 2.1.0的託管Linux機器,使用Postgres作爲我的數據庫,以及Apache(調用dispatch.cgi)作爲我的web服務器。我沒有權限更新本地Ruby或Rails安裝,或者本地安裝gems。
爲了使我的部署更容易(我認爲...),我已經爲我部署的系統取得了我的代碼庫分支。在這個分支上,我更新了database.yml來引用postgres並運行rake rails:freeze:gems
和rake gems:unpack:dependencies
。然後我將這個分支導出到我的生產服務器。
當我嘗試查看生產服務器上我的應用程序,我得到的錯誤:
Application error
Rails application failed to start properly"
檢查Apache的錯誤日誌,我看到以下內容:
./../config/../vendor/rails/railties/lib/initializer.rb:271:in `require_frameworks': Could not find RubyGem rack (~> 1.0.1) (RuntimeError)
from ./../config/../vendor/rails/railties/lib/initializer.rb:134:in `process'
from ./../config/../vendor/rails/railties/lib/initializer.rb:113:in `send'
from ./../config/../vendor/rails/railties/lib/initializer.rb:113:in `run'
from ./../config/environment.rb:9
from dispatch.cgi:5:in `require'
from dispatch.cgi:5
我很困惑。如果需要Rack,爲什麼不包括在gems:unpack
中?我怎樣才能得到這個工作?
(如果是相關的,vendor$ find . -name rack*
給出如下:
./rails/railties/lib/rails/rack
./rails/railties/lib/rails/rack.rb
./rails/railties/lib/rails/.svn/text-base/rack.rb.svn-base
./rails/actionpack/test/controller/rack_test.rb
./rails/actionpack/test/controller/.svn/text-base/rack_test.rb.svn-base
./rails/actionpack/lib/action_controller/rack_lint_patch.rb
./rails/actionpack/lib/action_controller/.svn/text-base/rack_lint_patch.rb.svn-base
)不包含
啊,這絕對有幫助,但我們不是那裏。首先,我還必須耙寶石:refr esh_specs,它已上架。我現在收到以下錯誤: /var/www/chowlett/dominion_frozen/vendor/rails/activesupport/lib/active_support/whiny_nil。rb:52:在'method_missing':未定義的方法'env_table'爲nil:NilClass(NoMethodError) from /var/www/chowlett/dominion_frozen/vendor/rails/actionpack/lib/action_controller/cgi_process.rb:22:in' '__send__' 如果它不相關,請告訴我,我會提出一個新問題。 – Chowlett 2010-08-23 08:24:09
不要緊,這最後似乎是在Debian下的Apache的一個問題,並且沒有使用Passenger。如果需要,我會嘗試通過它並提出一個新問題。 – Chowlett 2010-08-23 09:40:45