[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

[ANN] rubyhitsquad's vlad 1.0.0 Released

Ryan Davis

8/14/2007 12:05:00 AM

vlad version 1.0.0 has been released!

* <http://rubyhitsqua...
* <http://rubyforge.org/projects/hit...

Vlad the Deployer is pragmatic application deployment automation,
without mercy. Much like Capistrano, but with 1/10th the
complexity. Vlad integrates seamlessly with Rake, and uses familiar
and standard tools like ssh and rsync.

Impale your application on the heartless spike of the Deployer.

## FEATURES/PROBLEMS:

* Full deployment automation stack.
* Supports single server deployment with just 4 variables defined.
* Very few dependencies. All simple.
* Uses ssh with your ssh settings already in place.
* Uses rsync for efficient transfers.
* Run remote commands on one or more servers.
* Syncs files to one or more servers.
* Mix and match local and remote tasks.
* Built on rake. easy.
* Compatible with all of your tab completion shell script rake-tastic
goodness.
* Ships with tests that actually pass.
* Engine is under 500 lines of code.
* Super uper simple.
* Does NOT support Windows right now. Coming soon in 1.1.
* This is 1.0.0... expect rough edges.

Changes:

## 1.0.0 / 2007-08-04

* 1 major enhancement
* Birthday!

* <http://rubyhitsqua...
* <http://rubyforge.org/projects/hit...


6 Answers

Bil Kleb

8/14/2007 4:26:00 AM

0

Ryan Davis wrote:
> vlad version 1.0.0 has been released!
>
> * <http://rubyhitsqua...

LOL.

Reminds me of Victor the Cleaner from the original
La Femme Nikita[1].

From the Agile'07 conference,
--
Bil Kleb
http://fun3d.lar...

[1] http://www.imdb.com/title/...

Phlip

8/14/2007 4:40:00 AM

0

Bil Kleb wrote:

> Reminds me of Victor the Cleaner from the original
> La Femme Nikita[1].

That explains the line from the Beastie Boys that rhymes that with
"illin'est motherf---er from here to Gardina"!

Gardina is the next city over from Compton, which is renowned for
internecine crime.

--
Phlip
http://www.oreilly.com/catalog/9780...
"Test Driven Ajax (on Rails)"
assert_xpath, assert_javascript, & assert_ajax


Sharon Rosner

8/14/2007 7:29:00 AM

0


On Aug 14, 3:04 am, Ryan Davis <ryand-r...@zenspider.com> wrote:
> vlad version 1.0.0 has been released!
>

Congrats! looks really nice.

sharon


Joel VanderWerf

8/15/2007 9:30:00 PM

0

Ryan Davis wrote:
> * Uses ssh with your ssh settings already in place.
> * Uses rsync for efficient transfers.

Since you're using the external ssh program, you might consider using
the -S option in ssh. It lets you pay the setup cost (authentication,
tcp connect) once per host, rather than once per ssh or rsync
invocation. Makes a big difference with slow networks or many invocations.

In rakefiles, it lets you do the following:

m = SSHMaster.for "some.host.net"
m.rsync [file1, file2], some_dir_on_that_host
m.rsync local_dir, remote_dir, "-az" # or other rsync options
m.ssh some_cmd

Here's the implementation (needs hacking, I'm sure):

class SSHMaster
def initialize sock, host
@sock, @host = sock, host
end

def ssh cmd, &block
sh "ssh", "-S", @sock, @host, cmd, &block
end

DEFAULT_RSYNC_OPTS = ["-Cavz", "--exclude='*.bck'", "--progress"]

# dst may be "host:foo/bar" or just "foo/bar"
def rsync src, dst, opts=DEFAULT_RSYNC_OPTS, *optsrest, &block
src = [src] unless src.is_a?(Array)
src = FileList[*src]
opts = [opts] unless opts.is_a?(Array)
host_dst = (dst =~ /\A#{@host}:/) ? dst : "#{@host}:#{dst}"
sh "rsync", "--rsh=ssh -S #{@sock}",
*((opts + optsrest + src + [host_dst]).flatten), &block
end

SOCKET_NAME = "ssh_master_for_%r@%h:%p"

@master = {}

def self.for host
master = @master[host]
unless master
sock = File.join(ENV["TMPDIR"], SOCKET_NAME)
cmd = "ssh -M -S #{sock} #{host} 'echo hello; read'"
master_pipe = IO.popen(cmd, "r+")
master_pipe.gets
at_exit do
master_pipe.close if master_pipe and not master_pipe.closed?
end

master = @master[host] = new(sock, host)
end
master

rescue StandardError => ex
$stderr.puts "Failed to ssh to #{host}: #{ex.message}"
false
end
end

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

Wilson Bilkovich

8/16/2007 2:22:00 AM

0

On 8/15/07, Joel VanderWerf <vjoel@path.berkeley.edu> wrote:
> Ryan Davis wrote:
> > * Uses ssh with your ssh settings already in place.
> > * Uses rsync for efficient transfers.
>
> Since you're using the external ssh program, you might consider using
> the -S option in ssh. It lets you pay the setup cost (authentication,
> tcp connect) once per host, rather than once per ssh or rsync
> invocation. Makes a big difference with slow networks or many invocations.
>

We considered this, but there's a bug in the current version of svn
that breaks when you use ControlMaster. We're going to document how
to enable it in your ssh config file without breaking anything,
however. You just can't use it on hosts you intend to 'svn+ssh' into.

--Wilson.

Eric Hodel

8/16/2007 2:23:00 AM

0

On Aug 15, 2007, at 14:29, Joel VanderWerf wrote:
> Ryan Davis wrote:
>> * Uses ssh with your ssh settings already in place.
>> * Uses rsync for efficient transfers.
>
> Since you're using the external ssh program, you might consider
> using the -S option in ssh. It lets you pay the setup cost
> (authentication, tcp connect) once per host, rather than once per
> ssh or rsync invocation. Makes a big difference with slow networks
> or many invocations.

We're letting people set this per-host with their ~/.ssh/ssh_config.

Unfortunately some programs (subversion) don't work reliably with the
ControlMaster setting enabled.

--
Poor workers blame their tools. Good workers build better tools. The
best workers get their tools to do the work for them. -- Syndicate Wars