Any capistrano email recipes?

I'd like to set up capistrano to send an email whenever we do a
deployment. Just start an SMTP session with localhost and shoot off
the email. I have all the code to do that actually, I just don't know
how to run some Ruby code on the deployment server. Anyone know how
to do that, or do you have an email recipe?

Pat

Hey Pat-

  Here is a method you can use to run ruby code on the remote server:

def ruby(cmd, options={}, &block)
   temp_name = random_string + ".rb"
   begin
     put(cmd, temp_name, :mode => 0700)
     send(run_method, "ruby #{temp_name}", options, &block)
   ensure
     delete temp_name
   end
end

# then in a recipe:

task :foo do
    ruby "puts 'hello world!'"
    ruby <<-RUBY
       1.upto(10).do |i|
          pust i
       end
    RUBY
end

Cheers-
-- Ezra Zygmuntowicz -- Lead Rails Evangelist
-- ez@engineyard.com
-- Engine Yard, Serious Rails Hosting
-- (866) 518-YARD (9273)

Cool, thanks, that worked. Until I needed to load up some stuff from
the rails environment. Decided to use ActionMailer instead of just
doing the SMTP connection. Anyway, I created a cap plugin:

module CapistranoRunner
  def runner(cmd)
    run "#{release_path}/script/runner \"#{cmd}\" -e production"
  end
end
Capistrano.plugin :runner, CapistranoRunner

and then to use it it looks like

task :after_deploy do
  runner.runner "CapistranoMailer.deliver_deploy(:revision => #{revision})"
  cleanup
end

Pat