How do I configure remote refs for git + capistrano 3 in ROR deployment?
capistrano, capistrano3, deployment, git, ruby-on-rails
Solution
In Capistrano 3, you use `repo_url` instead of `repository`
So in your `deploy.rb`, try replacing
set :repository, "git@github.com:username/appname.git" # Your clone URL
with
set :repo_url, "https://github.com/username/appname.git" # Your clone URL
Hopefully this helps.
Update: The ssh URL needs a key; the https URL does not. It's worked for me.
Problem
I am trying to use capistrano (for the first time) to deploy my rails app. First the essentials, I am using: - ruby 1.9.3p362 - Rails 3.2.13 - rvm 1.24.7 - Capistrano 3.0.1 - Phusion Passenger 4.0.26 - Ubuntu 12.04 LTS I get the following error when attempting to run `cap production deploy` DEBUG [679a47be] fatal: No remote configured to list refs from. My full `cap production deploy` output is included below ``` 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 configured 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 I have altered this file to add my git url, the app name, the deploy_to path, and the tasks inside `task :restart` as directed to restart 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 ``` I tried to included all necessary information, please let me know if there is anything else I can add, thanks for any help you can provide!