我一直在与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
答案 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
来构建目录结构......