【发布时间】:2010-08-18 15:08:30
【问题描述】:
我有一个 Rails 应用程序,我在 Windows 上使用 Rails 2.3.5 开发,使用 sqlite3 作为我的数据库引擎,内部 Mongrel 服务器作为我的网络服务器。
我将此应用程序部署到运行 Rails 2.1.0 的托管 Linux 机器上,使用 Postgres 作为我的数据库,并使用 Apache(调用 dispatch.cgi)作为我的网络服务器。我无权更新本机 Ruby 或 Rails 安装,或本机安装 gem。
为了使我的部署更容易(我想...),我为部署的系统采用了我的代码库的一个分支。在这个分支上,我更新了 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
)
【问题讨论】:
标签: ruby-on-rails deployment rubygems