Forum: Ruby on Rails Capistrano to deploy to Mac OS X?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Josh on Rails (Guest)
on 2006-05-17 00:23
(Received via mailing list)
We're moving some "internal use" apps to a spare internal machine -
instead
of a public, shared host. I'm not sure if it's relevant, but the new
machine
is running OS 10.3.

I'm having a strange problem using Capistrano. It happens on both our
development machines, and only when deploying to this server.

I run 'cap deploy' and get:

in `process!': command "if [[ ! -d
/Users/www/myappnamehere/releases/20060516200956 ]]; then
    svn co --username josh -q -r741
http://mysvn/myappnamehere/trunk/Users/www/myappna...
&& (test -e
/Users/www/myappnamehere/revisions.log || touch
/Users/www/myappnamehere/revisions.log && chmod 666
/Users/www/myappnamehere/revisions.log) && echo `date +\"%Y-%m-%d
%H:%M:%S\"` $USER 741 20060516200956 >>
/Users/www/myappnamehere/revisions.log;
fi" failed

If I paste this command into terminal on the new server, I get:

date: illegal format

Eye-balling it, it looks like this might be backslashes on the ""s, so I
strip those, and try again... and it works. So, I can manually check-out
my
project, using the same commands as Capistrano would use, but I can't
use
Capistrano.

I suppose it shows how dependent on Capistrano I've become, that this
annoys
me so.

I've been staring at this all day, so I'm probably going cross-eyed, but
I
can't see what would be causing this to happen?
Tom M. (Guest)
on 2006-05-17 04:40
(Received via mailing list)
Looks like Mac OS X's date command isn't compatible with that syntax:

> ~: date +\"%Y-%m-%d %H:%M:%S\"
> date: illegal time format
> usage: date [-nu] [-r seconds] [+format]
>        date [[[[[cc]yy]mm]dd]hh]mm[.ss]

I'd grab the gnu source, build and install it into /usr/local/bin,
and make sure your deployment user environment had /usr/local/bin
first in PATH.

--
-- Tom M.
Josh on Rails (Guest)
on 2006-05-17 17:40
(Received via mailing list)
Wow... Okay, easier said than done, but I'll keep digging...

Are the slash-quotes part of the command, or are they being escaped in
the
error output? Because when I take the slashes out, it works. Which makes
me
suspicious, is all I'm saying.

Is anybody else using Cap to deploy to OS X having this problem?
Josh on Rails (Guest)
on 2006-05-17 18:44
(Received via mailing list)
So, continuing with this...

The command in question comes from:
/usr/local/lib/ruby/gems/1.8/gems/capistrano-1.1.0
/lib/capistrano/scm/base.rb

def logging_commands(directory = nil)
  log = "#{configuration.deploy_to}/revisions.log"

  "(test -e #{log} || touch #{log} && chmod 666 #{log}) && " +
  "echo `date +\"%Y-%m-%d %H:%M:%S\"` $USER #{configuration.revision}
#{directory} >> #{log};"
end

So, stuck on this idea that the \" are the problem, I took them out:

def logging_commands(directory = nil)
  log = "#{configuration.deploy_to}/revisions.log"

  "(test -e #{log} || touch #{log} && chmod 666 #{log}) && " +
  'echo `date +"%Y-%m-%d %H:%M:%S"`' + " $USER #{configuration.revision}
#{directory} >> #{log};"
end


Yet, when I run "cap deploy" in Terminal, I get:

in `process!': command "if [[ ! -d
/Users/www/myappnamehere/releases/20060517142841 ]]; then\\\n
svn co --username josh -q -r741
http://mysvnserver/myappnamehere/Users/www/myappna...
&&\\\n              (test
-e /Users/www/myappnamehere/revisions.log || touch
/Users/www/myappnamehere/revisions.log && chmod 666
/Users/www/myappnamehere/revisions.log) && echo `date +\"%Y-%m-%d
%H:%M:%S\"` $USER 741 20060517142841 >>
/Users/www/myappnamehere/revisions.log;\\\n            fi" failed on
myserver (RuntimeError)


That is, the \" are back! So, the logging_commands seem to get escaped
somewhere - it's not clear to me whether they get escaped in the error
logger, or in the command processor...

Oh: And I can run
echo `date +"%Y-%m-%d %H:%M:%S"` test1 test2 test3 >> test.log;

on the server without problems.

What am I missing?
Ryan R. (Guest)
on 2006-05-17 20:50
(Received via mailing list)
>  "(test -e #{log} || touch #{log} && chmod 666 #{log}) && " +
>  'echo `date +"%Y-%m-%d %H:%M:%S"`' + " $USER #{configuration.revision}
>#{directory} >> #{log};"
>end
>

What happens if you remove the slashes the alternate way? i.e.:

"echo `date +'%Y-%m-%d %H:%M:%S'`"

-r
This topic is locked and can not be replied to.