我正在使用 capistrano 将 Rails 应用程序部署到生产环境。一切似乎都正常,capistrano 没有报告任何错误,但是应用程序无法启动并出现以下错误消息
Ruby (Rack) 应用程序无法启动 在任何源中都找不到 activemodel-3.2.0 (Bundler::GemNotFound)
检查捆绑的 gem 时,正确版本的 gem 位于共享文件夹中,但乘客似乎没有使用它们。cap deploy 的总结输出如下
* executing "cd /opt/geonovo/retail/releases/20120628125205 && \
bundle install --gemfile /opt/geonovo/retail/releases/20120628125205/Gemfile \
--path /opt/geonovo/retail/shared/bundle --deployment \
--without development test"
servers: ["rt-devrails01"]
[rt-devrails01] executing command
** [out :: rt-devrails01] Fetching source index for http://rubygems.org/
** [out :: rt-devrails01] Using activesupport (3.2.0)
** [out :: rt-devrails01]
** [out :: rt-devrails01] Using builder (3.0.0)
** [out :: rt-devrails01]
** [out :: rt-devrails01] Installing activemodel (3.2.0)
...
...
* [out :: rt-devrails01]
** [out :: rt-devrails01] Your bundle is complete!
It was installed into /opt/geonovo/retail/shared/bundle
command finished in 47529ms
在生产服务器上运行gem list
不会显示 activemodel 3.2.0 gem 存在,但共享目录 /opt/geonovo/retail/shared/bundle/ruby/1.9.1/gems/ 确实包含 activemodel-3.2.0 的条目。
生产服务器 /bundle/config 文件包含以下内容
--- BUNDLE_FROZEN:“1” BUNDLE_PATH:/opt/geonovo/retail/shared/bundle BUNDLE_DISABLE_SHARED_GEMS:“1” BUNDLE_WITHOUT:开发:测试
在生产服务器上运行bundle check
显示如下
缺少以下宝石 *活动模型(3.2.0) *动作包(3.2.0) * actionmailer (3.2.0) *活动记录(3.2.0) *活动资源(3.2.0) *铁路(3.2.0) * 导轨 (3.2.0) 使用 `bundle install` 安装缺失的 gem
我可能可以使用安装 gem,bundle install
但如果可能的话,我希望在 capistrano 内进行部署。
Gemfile 的开头包括以下几行
来源“http://rubygems.org” 宝石'导轨','> = 3.2.0'