Reputation: 55
Good day! I'll try to be very specific with this. I'm sorry, but I've had experience a lot of troubles while trying to deploy my application. I'm totally new at rails, so I followed the Agile Web Development with Rails 4th Edition and I'm trapped on the segment of deploy with capistrano I've tried the exact code on the book, didn't work, and take some advices from this and others forums that prove to be helpful, but I'm still can't deploy correctly my deploy.rb goes like this:
require 'bundler/capistrano'
set :user, 'user_created_for_this_example'
set :domain, 'IPADDRESS'
set :application, 'depot'
# file paths
set :repository, "#{user}@#{domain}:depot.git"
set :deploy_to, "/home/#{user}/#{domain}"
# set :scm, :git # You can set :scm explicitly or Capistrano will make an intelligent guess
based on known version control directory names
# Or: `accurev`, `bzr`, `cvs`, `darcs`, `git`, `mercurial`, `perforce`, `subversion` or `none`
#roles server
role :web, domain
role :app, domain
role :db, domain, :primary => true
#deploy config
set :deploy_to, "/home/#{user}/#{domain}"
set :deploy_via, :copy
set :scm, 'git'
set :branch, 'master'
set :scm_verbose, true
set :use_sudo, false
# if you want to clean up old releases on each deploy uncomment this:
# after "deploy:restart", "deploy:cleanup"
# if you're still using the script/reaper helper you will need
# these http://github.com/rails/irs_process_scripts
# If you are using Passenger mod_rails uncomment this:
namespace :deploy do
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
after "deploy:update_code", :bundle_install
desc "install the necesary prerequisites"
task :bundle_install, :roles => :app do
run "cd #{release_path} && bundle install"
end
When i run the cap deploy:setup and cap deploy:check all seems to be working fine:
~/rails_projects/depot$ cap deploy:setup
* 2012-11-13 10:37:35 executing `deploy:setup'
* executing "mkdir -p /home/git/xx.xx.xx.xx /home/git/xx.xx.xx.xx/releases /home/git
/xx.xx.xx.xx/shared /home/git/xx.xx.xx.xx/shared/system /home/git/xx.xx.xx.xx/shared/log
/home/git/xx.xx.xx.xx/shared/pids"
servers: ["xx.xx.xx.xx"]
[xx.xx.xx.xx] executing command
command finished in 158ms
* executing "chmod g+w /home/git/xx.xx.xx.xx /home/git/xx.xx.xx.xx/releases /home/git/xx.xx.xx.xx/shared /home/git/xx.xx.xx.xx/shared/system /home/git/xx.xx.xx.xx/shared/log /home/git/xx.xx.xx.xx/shared/pids"
servers: ["xx.xx.xx.xx"]
[xx.xx.xx.xx] executing command
command finished in 7ms
~/rails_projects/depot$ cap deploy:check
* 2012-11-13 10:37:39 executing `deploy:check'
* executing "test -d /home/git/xx.xx.xx.xx/releases"
servers: ["xx.xx.xx.xx"]
[xx.xx.xx.xx] executing command
command finished in 152ms
* executing "test -w /home/git/xx.xx.xx.xx"
servers: ["xx.xx.xx.xx"]
[xx.xx.xx.xx] executing command
command finished in 5ms
* executing "test -w /home/git/xx.xx.xx.xx/releases"
servers: ["xx.xx.xx.xx"]
[xx.xx.xx.xx] executing command
command finished in 5ms
* executing "which tar"
servers: ["xx.xx.xx.xx"]
[xx.xx.xx.xx] executing command
command finished in 6ms
You appear to have all necessary dependencies installed
But when the cap deploy:migrations, cap deploy or cap deploy:cold command comes the next pops up:
~/rails_projects/depot$ cap deploy:migrations
* 2012-11-13 10:37:42 executing `deploy:migrations'
* 2012-11-13 10:37:42 executing `deploy:update_code'
executing locally: "git ls-remote [email protected]:depot.git master"
command finished in 241ms
* getting (via checkout) revision c3f88ca97e5868dd476f20e9a044b7dad800274a to /tmp/20121113173743
executing locally: git clone [email protected]:depot.git /tmp/20121113173743 && cd /tmp/20121113173743 && git checkout -b deploy c3f8
8ca97e5868dd476f20e9a044b7dad800274a
Cloning into '/tmp/20121113173743'...
remote: Counting objects: 392, done.
remote: Compressing objects: 100% (257/257), done.
remote: Total 392 (delta 111), reused 392 (delta 111)
Receiving objects: 100% (392/392), 8.59 MiB, done.
Resolving deltas: 100% (111/111), done.
Switched to a new branch 'deploy'
command finished in 769ms
* Compressing /tmp/20121113173743 to /tmp/20121113173743.tar.gz
executing locally: tar czf 20121113173743.tar.gz 20121113173743
command finished in 652ms
servers: ["xx.xx.xx.xx"]
** sftp upload /tmp/20121113173743.tar.gz -> /tmp/20121113173743.tar.gz
[xx.xx.xx.xx] /tmp/20121113173743.tar.gz
*** upload via sftp failed on xx.xx.xx.xx: Net::SFTP::StatusException
(Net::SFTP::StatusException open /tmp/20121113173743.tar.gz (3, "permission denied"))
upload via sftp failed on xx.xx.xx.xx: Net::SFTP::StatusException (Net::SFTP::StatusException open /tmp/20121113173743.tar.gz (3, "permission denied"))
I'm sorry if this is some dummy issue, an easy-fix or an already posted one, but I don't know what else to try, again I'm just starting with this stuff and I'm truly lost. I'm running all from the same machine and all the xx.xx.xx.xx stands for my ip address. Any suggestions will be really appreciated. I've tried to be specific as possible, but if something is missing I'll post it. Thanks beforehand for your time and help.
Upvotes: 2
Views: 2635
Reputation: 7292
We changed the Capfile from
set :deploy_via, :copy
to
set :deploy_via, :remote_cache
and this worked for us. We did not add the below line
default_run_options[:pty] = true
Upvotes: 0
Reputation: 21
Your problem here is that your source and destination locations for sftp are the same:
** sftp upload /tmp/20121113173743.tar.gz -> /tmp/20121113173743.tar.gz
in order to fix the issue you may specify parameter copy_dir in your config/deploy.rb file, something like this:
set :copy_dir, "/tmp/sftp"
no need to create that folder manually then.
Upvotes: 2
Reputation: 3277
Try adding this line to your deploy.rb configuration file:
default_run_options[:pty] = true
Upvotes: 0