Capistrano :: NoMatchingServersError on deploy: update_code

Tengo una secuencia de commands de implementación de capistrano que funciona en mi máquina local de Windows, pero un compañero de trabajo en una mac está llegando a un error de implementación. En realidad, es solo su computadora portátil, ya que también funciona en otras Mac, así que me pregunto si hay alguna caching de capistrano que deba ser limpiada. El error es …

* Compressing /var/folders/kv/g4k3rk815sd14948vzf1lhg40000gn/T/20131203013325 to /var/folders/kv/g4k3rk815sd14948vzf1lhg40000gn/T/20131203013325.tar.gz executing locally: tar czf 20131203013325.tar.gz 20131203013325 command finished in 114ms *** [deploy:update_code] rolling back ** [deploy:update_code] exception while rolling back: Capistrano::NoMatchingServersError, `deploy:update_code' is only run for servers matching {:except=>{:no_release=>true}}, but no servers matched `deploy:update_code' is only run for servers matching {:except=>{:no_release=>true}}, but no servers matched 

Mi deploy.rb (las partes importantes) son las siguientes …

 set :application, "app" task :prod do role :app, "10.1.40.123" role :web, "10.1.40.123" role :db, "10.1.40.123", :primary => true set :user, "root" set :password, "password" set :rails_env, "production" set :use_sudo, false load 'deploy/assets' # this line runs rake assets precompile set :os, 'ubuntu' default_environment["LD_LIBRARY_PATH"] = '/opt/oracle/instantclient_12_1' end set :repository, "ssh://gituser@example.com/opt/git/hub/app.git" set :deploy_to, "/srv/www/#{application}" set :deploy_via, :copy set :keep_releases, 5 set :scm, "git" set :branch, "master" after 'deploy:update_code', 'deploy:symlink_shanetworking', "deploy:migrate","deploy:restart" 

Él puede desplegar otras aplicaciones usando capistrano, estamos usando capistrano 2.

Parece que está intentando implementar en varias etapas con una tarea personalizada en lugar de utilizar la extensión de varias etapas . De esta forma, cuando está ejecutando el cap prod , en realidad no está implementando, y cuando ejecuta la cap deploy no está configurando las funciones, lo que causa el error en cuestión. Entonces, la solución sería reescribir su deploy.rb a algo como lo siguiente:

 set :stages, %w(prod staging) set :default_stage, "staging" require 'capistrano/ext/multistage' set :application, "app" set :repository, "ssh://gituser@example.com/opt/git/hub/app.git" set :deploy_to, "/srv/www/#{application}" set :deploy_via, :copy set :keep_releases, 5 set :scm, "git" set :branch, "master" after 'deploy:update_code', 'deploy:symlink_shanetworking', "deploy:migrate","deploy:restart" 

Luego, en su config/deploy/prod.rb debería tener su configuration relacionada con los prod:

 role :app, "10.1.40.123" role :web, "10.1.40.123" role :db, "10.1.40.123", :primary => true set :user, "root" set :password, "password" set :rails_env, "production" set :use_sudo, false load 'deploy/assets' # this line runs rake assets precompile set :os, 'ubuntu' default_environment["LD_LIBRARY_PATH"] = '/opt/oracle/instantclient_12_1' 

De esta forma, podrá implementar en producción con la cap prod deploy (o también con cap deploy si cambia set :default_stage, "staging" para set :default_stage, "prod" ).