【问题标题】:Capistrano Rails deployment -- "could not find gem...rolling back"Capistrano Rails 部署——“找不到 gem……正在回滚”
【发布时间】: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 都可以在 ruby​​gems.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?只是为了确保问题不是 ruby​​gems 本身,也不是一些网络问题(我之前安装时遇到了问题,因为服务器搞砸了 DNS 设置并且找不到 ruby​​gems.org,但我可以 SSH 很好,所以有点难找)

标签: ruby-on-rails deployment capistrano bundler


【解决方案1】:

我认为您的 capistrano 配方实际上并没有完全运行 bundle install。确保您的 deploy.rb 配方中有 require "bundler/capistrano"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多