【问题标题】:Bundle install error when deploying via capistrano (& rvm)通过 capistrano (& rvm) 部署时出现捆绑安装错误
【发布时间】:2012-09-10 13:29:23
【问题描述】:

现在我必须承认,就这个部署百灵鸟而言,我有点摸不着头脑。我会尽力解释情况;我已经设置了一个测试部署服务器,并尝试使用 capistrano 将我的应用程序部署到它,但是,我在我的 gem 及其依赖项方面遇到了一些困难,就像鞋子下面的错误一样。

[mike-test] executing command
[mike-test] rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '1.9.3' -c 'cd /home/deploy/myapp/releases/20120910081544 && bundle install --gemfile /home/deploy/myapp/releases/20120910081544/Gemfile --path /home/depoy/myapp/shared/bundle --deployment --quiet --without development test'
 ** [out :: mike-test] Some gems seem to be missing from your vendor/cache directory.
 ** [out :: mike-test] Could not find log4r-1.1.10 in any of the sources
command finished in 9134ms
*** [deploy:update_code] rolling back

log4r 不在我的 gemfile 中,所以我只能假设它是另一个 gem 的(也许只是生产?)依赖项。我不知道为什么 bundler 没有下载 gem 并在找不到它的情况下安装它?我将 gem 放在我的 gemfile 中,在本地运行 bundle install ,然后再次提交并部署并得到相同的错误,但这次使用了不同的 gem(电子表格),所以似乎只在这种情况下解决了错误,但没有t 发现问题。

还有一些事情可以搅浑水,我正在尝试在生产服务器上使用 RVM,尽管阅读了很多关于它的内容,但我仍然不能 100% 确定我了解它是如何工作的,所以这可能是一个因素。

我的deploy.rb

require "bundler/capistrano"
require "rvm/capistrano"

# SCM Settings
set :rvm_ruby_string, '1.9.3' 
set :use_sudo, false

ssh_options[:forward_agent] = true
default_run_options[:pty] = true

set :branch, :mikedev
set :deploy_via, :remote_cache
set :copy_cache, true
set :git_enable_submodules, 0
set :repository, "our_git_repo.git"
set :scm, :git
set :user, :deploy
set :keep_releases, 1

set :application, "myapp"
set :deploy_to, "/home/deploy/myapp"
set :branch, "mikedev"

role :web, "mike-test"                          
role :app, "mike-test"                          
role :db,  "mike-test", :primary => true      

namespace :deploy do

  desc "Restarting mod_rails with restart.txt"
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "touch #{current_path}/tmp/restart.txt"
  end

  [:start, :stop].each do |t|
    desc "#{t} task is a no-op with mod_rails"
    task t, :roles => :app do ; end
  end

end

任何指导将不胜感激。

【问题讨论】:

    标签: ruby-on-rails rvm capistrano bundler


    【解决方案1】:

    如果vendor/cache 存在,bundle install --deployment ... 将不会下载任何 gem。它会在那里寻找宝石。有两种选择:

    • 从您的 VCS 中删除 vendor/cache 目录(即使它已经为空)
    • 或运行bundle package 并将vendor/cache 下的所有新文件添加到您的VCS

    后者似乎是更好的选择。通过这种方式,您可以保护您的部署免受 ruby​​gems 服务器中断的影响。

    【讨论】:

    • 通过查看此页面 rubygems.org/gems/paperclip/versions 我看到 3.0.0 已被拉出。您必须将其捆绑更新到一些可用且兼容的版本。
    • 是的,我的错,对那个评论有点过激了。感谢您的帮助:),所有已排序并接受答案!
    猜你喜欢
    • 2013-02-03
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2011-07-29
    • 1970-01-01
    • 2012-12-16
    相关资源
    最近更新 更多