[ANN] rubyhitsquad's vlad 1.0.0 Released

vlad version 1.0.0 has been released!

* <http://rubyhitsquad.com/>
* <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
   * Birthday!

* <http://rubyhitsquad.com/>
* <http://rubyforge.org/projects/hitsquad/>

Ryan Davis wrote:

vlad version 1.0.0 has been released!

* <Ruby Hit Squad - Programacion, marketing y mucho ruby on rails;

LOL.

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

From the Agile'07 conference,

···

--
Bil Kleb
http://fun3d.larc.nasa.gov

[1] Nikita (1990) - IMDb

Congrats! looks really nice.

sharon

···

On Aug 14, 3:04 am, Ryan Davis <ryand-r...@zenspider.com> wrote:

vlad version 1.0.0 has been released!

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

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
  Test Driven Ajax (on Rails) [Book]
  "Test Driven Ajax (on Rails)"
  assert_xpath, assert_javascript, & assert_ajax

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.

···

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'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.

···

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.

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