¿Cómo configuro las references remotas para git + capistrano 3 en la implementación de ROR?

Estoy intentando usar capistrano (por primera vez) para implementar mi aplicación de Rails. Primero lo esencial, estoy usando:

  • ruby 1.9.3p362
  • Rieles 3.2.13
  • rvm 1.24.7
  • Capistrano 3.0.1
  • Phusion Passenger 4.0.26
  • Ubuntu 12.04 LTS

Recibo el siguiente error al intentar ejecutar la cap production deploy

DEBUG [679a47be] fatal: Sin control remoto configurado para listr references desde.

Mi cap production deploy completa se incluye a continuación

  INFO [488ba755] Running /usr/bin/env mkdir -p /tmp/AppName/ on sub.example.com DEBUG [488ba755] Command: /usr/bin/env mkdir -p /tmp/AppName/ INFO [488ba755] Finished in 1.730 seconds with exit status 0 (successful). DEBUG Uploading /tmp/AppName/git-ssh.sh 0.0% INFO Uploading /tmp/AppName/git-ssh.sh 100.0% INFO [c895f068] Running /usr/bin/env chmod +x /tmp/AppName/git-ssh.sh on sub.example.com DEBUG [c895f068] Command: /usr/bin/env chmod +x /tmp/AppName/git-ssh.sh INFO [c895f068] Finished in 0.217 seconds with exit status 0 (successful). DEBUG [679a47be] Running /usr/bin/env git ls-remote on sub.example.com DEBUG [679a47be] Command: ( GIT_ASKPASS=/bin/echo GIT_SSH=/tmp/AppName/git-ssh.sh /usr/bin/env git ls-remote ) DEBUG [679a47be] fatal: No remote configunetworking to list refs from. DEBUG [679a47be] Finished in 1.775 seconds with exit status 128 (failed). 

Gemfile

 # Deploy with Capistrano gem 'capistrano', '~> 3.0.0' gem 'capistrano-rails', '~> 1.1.0' gem 'rvm1-capistrano3', require: false 

Capfile

 # Load DSL and Setup Up Stages require 'capistrano/setup' # Includes default deployment tasks require 'capistrano/deploy' # require 'capistrano/rvm' # require 'capistrano/rbenv' # require 'capistrano/chruby' require 'capistrano/bundler' require 'capistrano/rails/assets' require 'capistrano/rails/migrations' # Loads custom tasks from `lib/capistrano/tasks' if you have any defined. Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r } 

deploy.rb

He modificado este file para agregar mi git url, el nombre de la aplicación, la ruta deploy_to y las tareas dentro de la task :restart como se indica para reiniciar Phusion Passenger.

 set :application, 'AppName' set :deploy_to, '/var/www/appname' set :repository, "git@github.com:username/appname.git" # Your clone URL set :scm, "git" set :user, "my-github-deploy-user" # The server's user for deploys set :scm_passphrase, "correct-password" # The deploy user's password set :branch, "master" set :deploy_via, :remote_cache # ask :branch, proc { `git rev-parse --abbrev-ref HEAD`.chomp } set :ssh_options, { verbose: :debug } set :format, :pretty set :log_level, :debug # set :pty, true set :linked_files, %w{config/database.yml} set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system} # set :default_env, { path: "/opt/ruby/bin:$PATH" } # set :keep_releases, 5 namespace :deploy do desc 'Restart application' task :restart do on roles(:app), in: :sequence, wait: 5 do # Your restart mechanism here, for example: execute :touch, release_path.join('tmp/restart.txt') # 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 end after :restart, :clear_cache do on roles(:web), in: :groups, limit: 3, wait: 10 do # Here we can do anything such as: within release_path do execute :rake, 'cache:clear' end end end after :finishing, 'deploy:cleanup' end 

Traté de include toda la información necesaria, por favor avíseme si hay algo más que pueda agregar, ¡gracias por toda la ayuda que pueda brindar!

En Capistrano 3, usas repo_url lugar de repository

Por lo tanto, en su deploy.rb , intente replace

 set :repository, "git@github.com:username/appname.git" # Your clone URL 

con

 set :repo_url, "https://github.com/username/appname.git" # Your clone URL 

Espero que esto ayude.

Actualización : la URL ssh necesita una key; la URL https no. Me funcionó.