Capistrano部署问题

时间:2012-06-19 21:56:10

标签: ruby-on-rails ubuntu deployment rvm capistrano

我一直在与Capistrano搏斗,尝试部署一个测试轨道应用程序几天,我我几乎在那里,但是当我跑的时候我收到了这个错误cap deploy

failed: "rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell 'default' -c 'cd var/rails/test_app/current/releases/20120619215252 && bundle install --gemfile var/rails/test_app/current/releases/20120619215252/Gemfile --path var/rails/test_app/current/shared/bundle --deployment --quiet --without development test'" on my.vps.ip.address

这是什么意思,我该如何解决这个问题?

谢谢!

这是我的deploy.rb文件,如果它有帮助:

# RVM

$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require "rvm/capistrano"
set :rvm_ruby_string, 'default'
set :rvm_type, :system

# Bundler

require "bundler/capistrano"

# General

set :application, "test_app"
set :user, "rails"

set :deploy_to, "var/rails/test_app/current"
set :deploy_via, :copy

set :use_sudo, false

# Git

set :scm, :git
set :repository,  "~/Projects/test_app/.git"
set :branch, "master"

# VPS

role :web, "my.vps.ip.address"
role :app, "my.vps.ip.address"
role :db,  "my.vps.ip.address", :primary => true
role :db,  "my.vps.ip.address"

# Passenger

namespace :deploy do
 task :start do ; end
 task :stop do ; end
 task :restart, :roles => :app, :except => { :no_release => true } do
  run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
 end
end

1 个答案:

答案 0 :(得分:2)

Capistrano正试图进入最新的部署文件夹并运行“bundle install”。 问题似乎是capistrano尝试这样做的文件夹: 你在做cd var/rails/test_app/current/releases/20120619215252 && bundle install ... 在路径的开头缺少A /,应该是/ var / rails ... 你应该错误地覆盖食谱中某处的路径。

看到你应该有的食谱(注意/)

set :deploy_to, "/var/rails/test_app/"

不指定“当前”文件夹,这是capistrano的默认行为。 确保/ var / rails / test_app /归用于部署的用户所有。否则:chown -R rails:rails /var/rails/test_app/ rails:rails,因为你的食谱中有set :user, "rails"

另外,不要忘记cap deploy:setup来构建目录结构......