32423hjh32423
32423hjh32423

Reputation: 3088

Capistrano 3.4 Deployment Problems

I have inherited a Rails project and I am unable to deploy it using the supplied instructions using Capistrano. I am not familiar with capistrano at all.

Whatever I try I always get the following error message

(Backtrace restricted to imported tasks)
cap aborted!
ArgumentError: wrong number of arguments (1 for 2)

Tasks: TOP => production
(See full trace by running task with --trace)

This includes

$ bundle exec cap -T

$ bundle exec cap production deploy

I am following the guide here https://github.com/capistrano/capistrano

I have starred out important info but here is the a copy of the config/deploy/staging.rb

role :app, %w{deploy@**.**.**.**:****}
role :web, %w{deploy@**.**.**.**:****}
role :db,  %w{deploy@**.**.**.**:****}

set :branch, 'develop'
set :deploy_to, '/var/www/soreen.staged.ws'

set :ssh_options, {
  keepalive: true,
  keepalive_interval: 60 #seconds
}

and here is Capfile

# Load DSL and Setup Up Stages
require 'capistrano/setup'

# Includes default deployment tasks
require 'capistrano/deploy'

require 'capistrano/rbenv'
require 'capistrano/bundler'
require 'capistrano/rails/migrations' 
require 'capistrano/rails/assets'
require 'capistrano/rails/collection'

# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }

and here is config/deploy.rb

# config valid only for current version of Capistrano
lock '3.4.0'

set :application, 'Soreen'
set :repo_url => "****************" 

set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system')

set :rbenv_type, :user # or :system, depends on your rbenv setup
set :rbenv_ruby, '2.1.2'
set :rbenv_prefix, "RBENV_ROOT=#{fetch(:rbenv_path)} RBENV_VERSION=#    {fetch(:rbenv_ruby)} #{fetch(:rbenv_path)}/bin/rbenv exec"
set :rbenv_map_bins, %w{rake gem bundle ruby rails}
set :rbenv_roles, :all # default value

namespace :deploy do

  desc 'Restart application'
  task :restart do
on roles(:app), in: :sequence, wait: 5 do
      # Your restart mechanism here, for example:
      execute :mkdir, '-p', "#{ release_path }/tmp"
      execute :touch, release_path.join('tmp/restart.txt')
    end
  end

  after :publishing, :restart

  after :restart, :clear_cache do
    on roles(:web), in: :groups, limit: 3, wait: 10 do

    end
  end

end

Please help !

Upvotes: 1

Views: 2293

Answers (1)

Douglas F Shearer
Douglas F Shearer

Reputation: 26528

You can get a backtrace for the error using the following:

bundle exec cap --backtrace -T

That will give you more information. Likely this is a syntax error in your configuration.

Upvotes: 3

Related Questions