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

On Mar 4, 2007, at 4:52 PM, Pat M. wrote:

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 Z.
– Lead Rails Evangelist
[email protected]
– Engine Y., Serious Rails Hosting
– (866) 518-YARD (9273)

On 3/4/07, Ezra Z. [email protected] wrote:

 put(cmd, temp_name, :mode => 0700)
ruby "puts 'hello world!'"

[email protected]
– Engine Y., 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