Hi all,
I want to love capistrano and I’m so close.
My error is occuring while running the update_code task… (apologies
for the shell spew)
- executing “rm -rf
/home/henster29/sites/glitter/releases/20060316143447/log
/home/henster29/sites/glitter/releases/20060316143447/public/system
&&\n ln -nfs /home/henster29/sites/glitter/shared/log
/home/henster29/sites/glitter/releases/20060316143447/log &&\n ln
-nfs /home/henster29/sites/glitter/shared/system
/home/henster29/sites/glitter/releases/20060316143447/public/system”
servers: [“aidlife.textdriven.com”]
[aidlife.textdriven.com] executing command
** [out :: aidlife.textdriven.com] ln:
/home/henster29/sites/glitter/releases/20060316143447/public/system:
No such file or directory
command finished
Ah, so its trying to make a symbolic link to a dir that doesnt exist…
I checked the gems/capistrano-1.1.0/lib/capistrano/recipes/standard.rb
which seems to be the source and found this…
task :update_code, :roles => [:app, :db, :web] do
on_rollback { delete release_path, :recursive => true }
source.checkout(self)
run <<-CMD
rm -rf #{release_path}/log #{release_path}/public/system &&
ln -nfs #{shared_path}/log #{release_path}/log &&
ln -nfs #{shared_path}/system #{release_path}/public/system
CMD
end
Which looks like (to me) that it blows away
#{release_path}/public/system and then tries to make a link in there.
I must be talking crap since this works for everyone else… Any ideas?
Thanks
-henry
Henry,
Did you set up your machines using the ‘setup’ task, or did you build
the directories manually?
The directory structure ought to look like this:
/deploy_to
/deploy_to/releases
/deploy_to/releases/…
/deploy_to/shared
/deploy_to/shared/log
/deploy_to/shared/system
/deploy_to/current -> /deploy_to/releases/…
Thanks for the help guys, you led me down the right track.
I was trying to deploy a single file,“test.txt”, to see if I could get
it to work… rather than a whole rails app.
/deploy_to/releases/public isnt made in setup but rather checked out
from your repos. So public wasnt there… Oops.
It might be nice to have /deploy_to/releases/public created during
setup… but I may be in the minority using full blown capistrano to
upload a text file
beers
-h
Henry T. wrote:
My error is occuring while running the update_code task… (apologies
for the shell spew)
Shell spew is helpful. Give us more!
** [out :: aidlife.textdriven.com] ln:
task :update_code, :roles => [:app, :db, :web] do
on_rollback { delete release_path, :recursive => true }
source.checkout(self)
run <<-CMD
rm -rf #{release_path}/log #{release_path}/public/system &&
If you want to trouble shoot this, change the rm -rf to rm -r. Then if
the #{release_path}/log or #{release_path}/public/system do not exist,
you will get an error. The -f option causes rm not to complain about
directories that don’t exist, in addition to forcing removal of files
that have restrictive permissions.
As Jamis points out in a parallel response, if you run the setup tasks
these directories should have been created, but is possible that they
don’t.
Ray