【发布时间】:2012-04-24 18:43:36
【问题描述】:
我正在尝试将 Rails 应用程序从 OS X 开发工作站部署到 RedHat Linux 5 生产服务器。
我将cap deploy 的完整输出放入this gist。
显示问题的这部分输出,我认为:
** [out :: devuser@web3] Could not find gem 'awesome_print (>= 0) ruby' in any of the gem sources listed in your Gemfile.
** [out :: devuser@web3] Run `bundle install` to install missing gems.
command finished in 663ms
*** [deploy:update_code] rolling back
这些是我在这里看到的一些问题:
awesome_print属于:development组,因此 Capistrano 不应尝试在生产中安装它。无论如何,所有的 gem 都可以在 rubygems.org 中找到,所以安装它们应该没有问题。
如果有人知道让cap deploy 工作的方法,我将不胜感激。谢谢。
我的 Gemfile...
source 'https://rubygems.org'
gem 'rails', '3.2.2'
gem 'mysql2', '0.3.11'
gem 'capistrano', '2.11.2'
gem 'haml-rails', '0.3.4'
gem 'net-ldap', '0.3.1'
gem 'bourbon', '1.4.0'
gem 'simple_form', '2.0.1'
gem 'will_paginate', '3.0.3'
group :development, :test do
end
group :development do
gem 'wirble'
gem 'awesome_print'
gem "autotest", '4.4.6'
gem "autotest-rails-pure", '4.1.2'
gem "autotest-fsevent", '0.2.8'
gem "autotest-growl", '0.2.16'
end
group :test do
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
gem 'therubyracer', '0.9.10'
gem 'uglifier', '>= 1.0.3'
end
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'
【问题讨论】:
-
'awesome_print' gem 列在开发组下,但是当您部署到 prod bundler 时将忽略开发组 gem
-
Doh,我刚刚重读了你的问题,发现你写了那个! :) 您是否尝试过从 Gemfile 中取出该行的部署? (不理想,只是看看它是否有效)
-
Bundler 使用 everything 解决所有组的依赖项和版本。它可能不会安装所有这些,但它至少必须找到 gemspecs。无论您安装什么,这都会保持开发 == 生产。很遗憾,我无法帮助您解决缺少 gem 的错误。
-
@KreeK 是的。如果我将一个 gem 注释掉,它只会移动到另一个 gem 并且无法“在任何来源中找到它”。
-
既然你没提,你有没有试过在系统上手动安装gem?只是为了确保问题不是 rubygems 本身,也不是一些网络问题(我之前安装时遇到了问题,因为服务器搞砸了 DNS 设置并且找不到 rubygems.org,但我可以 SSH 很好,所以有点难找)
标签: ruby-on-rails deployment capistrano bundler