Forum: Ruby on Rails Any capistrano email recipes?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Pat M. (Guest)
on 2007-03-05 02:53
(Received via mailing list)
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
Ezra Z. (Guest)
on 2007-03-05 03:17
(Received via mailing list)
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
-- removed_email_address@domain.invalid
-- Engine Y., Serious Rails Hosting
-- (866) 518-YARD (9273)
Pat M. (Guest)
on 2007-03-06 02:01
(Received via mailing list)
On 3/4/07, Ezra Z. <removed_email_address@domain.invalid> wrote:
> >
>      put(cmd, temp_name, :mode => 0700)
>     ruby "puts 'hello world!'"
> -- removed_email_address@domain.invalid
> -- 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
This topic is locked and can not be replied to.