Capistrano :update_code problem

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/…

  • Jamis

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 :wink:

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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs