On Mar 22, 2007, at 10:49 PM, Radu Spineanu wrote:> I am trying to use run to reload a small program in after_deploy, it
> goes something like this:
>
> run <<-CMD
> if [[ -f #{shared_path}/pids/program.pid ]]; then
> pid=$(cat #{shared_path}/pids/program.pid)
> if [[ $pid ]]; then
> kill -9 $pid
> fi
> fi
> cd #{release_path}/vendor/cli && ./program.rb"
> CMD
>
> When I run cap deploy it sends something like:
> * executing "if [[ -f /home/yyy.com/shared/pids/dprogram.pid ]];
> then
> \n\t\t\tpid=$(cat /home/yyy.com/shared/pids/program.pid)\n\t\t\tif
> [[ $pid ]]; then\n\t\t\t\tkill -9 $pid\n\t\t\tfi\n\t\tfi\n\t cd /
> home/yyy.com/releases/20070323023501/vendor/cli &&
./program.rb"
>
> Which returns something like:
> ** [out :: www.yyy.com] bash: -c: line 3: syntax error near
> unexpected token `then''
> ** [out :: www.yyy.com] bash: -c: line 3: `
> kill -9 $pid\''
> command finished
>
> Those commands work if not passed via capistrano. Any ideas on how to
> fix this?
>
> - Radu
run <<-CMD
if [[ -f #{shared_path}/pids/program.pid ]]; then
pid=$(cat #{shared_path}/pids/program.pid) ;
if [[ $pid ]]; then
kill -9 $pid ;
fi ;
fi ;
(cd #{release_path}/vendor/cli && ./program.rb)"
CMD
Try it with the extra '';'' and the ( ) around the last command.
The
whole string has to be parsable by the shell as if you typed it on a
single line. The ()''s force a subshell for the last part and keep
the && from associating in a way you might not expect (perhaps not
now, but later if you add other commands).
You can probably replace -f with -s, "cat" with "<", and
remove the
''if/fi'' around the kill command.
Heck, you might as well try:
run <<-CMD
if [[ -s #{shared_path}/pids/program.pid ]]; then
kill -9 $(< #{shared_path}/pids/program.pid) ;
fi ;
(cd #{release_path}/vendor/cli && ./program.rb)"
CMD
(but try the small changes first to see for yourself)
-Rob
Rob Biedenharn http://agileconsultingllc.com
Rob-xa9cJyRlE0mWcWVYNo9pwxS2lgjeYSpx@public.gmane.org
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---