# Rubyhitsquad's vlad 1.0.0 Released

**URL:** <https://www.ruby-forum.com/t/rubyhitsquads-vlad-1-0-0-released/111985>\
**Category:** Ruby\
**Created:** [August 14, 2007, 2:05am UTC](https://www.ruby-forum.com/t/rubyhitsquads-vlad-1-0-0-released/111985 "2007-08-14T02:05:33Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [August 14, 2007, 2:05am UTC](https://www.ruby-forum.com/t/rubyhitsquads-vlad-1-0-0-released/111985/1 "2007-08-14T02:05:33Z")

</div>

vlad version 1.0.0 has been released!

- [http://rubyhitsquad.com/](http://rubyhitsquad.com/)
- [http://rubyforge.org/projects/hitsquad/](http://rubyforge.org/projects/hitsquad/)

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

- [http://rubyhitsquad.com/](http://rubyhitsquad.com/)

- [http://rubyforge.org/projects/hitsquad/](http://rubyforge.org/projects/hitsquad/)

---

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [August 14, 2007, 9:30am UTC](https://www.ruby-forum.com/t/rubyhitsquads-vlad-1-0-0-released/111985/2 "2007-08-14T09:30:06Z")

</div>

On Aug 14, 3:04 am, Ryan D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> vlad version 1.0.0 has been released!

Congrats! looks really nice.

sharon

---

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [August 15, 2007, 11:30pm UTC](https://www.ruby-forum.com/t/rubyhitsquads-vlad-1-0-0-released/111985/3 "2007-08-15T23:30:56Z")

</div>

Ryan D. 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](http://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

---

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [August 16, 2007, 4:24am UTC](https://www.ruby-forum.com/t/rubyhitsquads-vlad-1-0-0-released/111985/4 "2007-08-16T04:24:48Z")

</div>

On Aug 15, 2007, at 14:29, Joel VanderWerf wrote:

> Ryan D. 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.

---

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [August 16, 2007, 4:22am UTC](https://www.ruby-forum.com/t/rubyhitsquads-vlad-1-0-0-released/111985/5 "2007-08-16T04:22:48Z")

</div>

On 8/15/07, Joel VanderWerf [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Ryan D. 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.

---

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [September 25, 2007, 11:09pm UTC](https://www.ruby-forum.com/t/rubyhitsquads-vlad-1-0-0-released/111985/6 "2007-09-25T23:09:07Z")

</div>

Bil K. 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.

---

<div class="post-metadata">

**Author:** ![aguynamedryan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/43a26b/32.png) [@aguynamedryan](https://www.ruby-forum.com/u/aguynamedryan)\
**Post date:** [September 25, 2007, 11:10pm UTC](https://www.ruby-forum.com/t/rubyhitsquads-vlad-1-0-0-released/111985/7 "2007-09-25T23:10:20Z")

</div>

Ryan D. wrote:

> vlad version 1.0.0 has been released!
> 
> - [http://rubyhitsquad.com/](http://rubyhitsquad.com/)

LOL.

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

## From the Agile’07 conference,

Bil K.

> **[FUN3D Manual](https://fun3d.larc.nasa.gov/)**
>
> FUN3D suite of CFD simulation and design tools

[1] [Nikita (1990) - IMDb](http://www.imdb.com/title/tt0100263/)
