Search code examples
ruby-on-rails-3capistranovlad-deployer

Vlad the Deployer: Troubles Migrating


I'm configuring Vlad The Deployer for deploying my app and Im getting a weird error and Im unable to find an answer.

The issues is the following, after I migration it goes to get latest "release" of my app and it goes to get a release that doesnt exist, even though the update run before has provided the latest release.

** Invoke vlad:update (first_time)
** Execute vlad:update
ssh -p 10022 labpress.com.ar 'cd /opt/prj/agregador/scm && rm -rf/opt/prj/agregador/scm/repo && git clone git@bitbucket.org:ibmedialab/noticioso.git /opt/prj/agregador/scm/repo && cd /opt/prj/agregador/scm/repo && git submodule update --init && git checkout -f -b deployed-origin/master origin/master && cd - && mkdir -p /opt/prj/agregador/releases/20130426162742 && cd repo && git archive --format=tar deployed-origin/master | (cd /opt/prj/agregador/releases/20130426162742 && tar xf -) && git submodule foreach 'git archive --format=tar $sha1 | (cd /opt/prj/agregador/releases/20130426162742/$path && tar xf -)' && cd - && cd .. && rm -rf /opt/prj/agregador/releases/20130426162742/log /opt/prj/agregador/releases/20130426162742/public/system /opt/prj/agregador/releases/20130426162742/tmp/pids && mkdir -p /opt/prj/agregador/releases/20130426162742/tmp /opt/prj/agregador/releases/20130426162742/db'
Cloning into '/opt/prj/agregador/scm/repo'...
Branch deployed-origin/master set up to track remote branch master from origin.
Switched to a new branch 'deployed-origin/master'
/opt/prj/agregador/scm
/opt/prj/agregador/scm
** Invoke vlad:update_symlinks (first_time)
** Execute vlad:update_symlinks
ssh -p 10022 labpress.com.ar 'ln -s /opt/prj/agregador/shared/log/opt/prj/agregador/releases/20130426162742/log && ln -s /opt/prj/agregador/shared/system /opt/prj/agregador/releases/20130426162742/public/system && ln -s /opt/prj/agregador/shared/pids /opt/prj/agregador/releases/20130426162742/tmp/pids'
ssh -p 10022 labpress.com.ar 'rm -f /opt/prj/agregador/current && ln -s /opt/prj/agregador/releases/20130426162742 /opt/prj/agregador/current && echo 201304261627.50 $USER origin/master 20130426162742 >> /opt/prj/agregador/revisions.log'
norcali@TAW093:~/Desarrollo/Infobae/Ruby/Rails/agregador$ rake -t vlad:migrate
** Invoke vlad:migrate (first_time)
** Execute vlad:migrate
ssh -p 10022 labpress.com.ar 'cd /opt/prj/agregador/releases/20130426162759 && rake 'RAILS_ENV=production db:migrate '
sh: 1: cd: can't cd to /opt/prj/agregador/releases/20130426162759
rake aborted!

Basically, everytime I run "migrate" it creates tries to get a newer version that doesnt exist and the process fails.

And this is my config code:

deploy.rb

set :ssh_flags, "-p 10022"
set :domain, "labpress.com.ar"
set :application, "noticioso"
set :deploy_to, "/opt/prj/agregador"
set :repository, 'git@bitbucket.org:ibmedialab/noticioso.git'
set :revision, "origin/master"
set :web, "nginx"


namespace :vlad do

   desc "Full deployment cycle: Update, migrate, restart, cleanup"
   remote_task :deploy, :roles => :app do
     Rake::Task['vlad:update'].invoke
     Rake::Task['vlad:migrate'].invoke
     Rake::Task['vlad:start_app'].invoke
     Rake::Task['vlad:cleanup'].invoke
  end
end

Rakefile

require File.expand_path('../config/application', __FILE__)

Agregador::Application.load_tasks

begin
  require 'vlad'
  Vlad.load :app => :passenger, :scm => :git, :web => :nginx
rescue LoadError
  puts 'Could not load Vlad'
end

Gemfile

gem 'vlad', :require => false
gem 'vlad-git', '2.1.0', :require => false
gem 'vlad-nginx', :require => false
gem 'vlad-extras', :require => false

So, thats about it, if anyone has any ideas to help me it'd be much appreciated.


Solution

  • I had the same problem and after some playing around I was able to fix the problem by adding

    set :migrate_target, :current
    

    to my deploy.rb