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.
42172acdf3c6046f84d644cb0b94642c?d=identicon&s=25 Pat Maddox (pergesu)
on 2007-03-05 01: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
6076c22b65b36f5d75c30bdcfb2fda85?d=identicon&s=25 Ezra Zygmuntowicz (Guest)
on 2007-03-05 02:17
(Received via mailing list)
On Mar 4, 2007, at 4:52 PM, Pat Maddox 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 Zygmuntowicz
-- Lead Rails Evangelist
-- ez@engineyard.com
-- Engine Yard, Serious Rails Hosting
-- (866) 518-YARD (9273)
42172acdf3c6046f84d644cb0b94642c?d=identicon&s=25 Pat Maddox (pergesu)
on 2007-03-06 01:01
(Received via mailing list)
On 3/4/07, Ezra Zygmuntowicz <ezmobius@gmail.com> wrote:
> >
>      put(cmd, temp_name, :mode => 0700)
>     ruby "puts 'hello world!'"
> -- 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
This topic is locked and can not be replied to.