我有一个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