使用自动电子邮件响应在生产服务器上每日测试rails应用程序

时间:2011-02-19 13:25:19

标签: email ruby-on-rails-3 testing

我在生产服务器上有一个rails应用程序,我需要24小时测试一致性(测试测试应用程序调用的各种API)。

如果服务器上的测试失败,我需要立即通知(可能通过电子邮件),以便我们可以解决问题。

我们使用Capistrano进行部署,并使用whenver gem进行Cron处理。

我们正在考虑使用when在运行“rake test”的生产目录中运行shell脚本,并使用“$?”检查该命令的输出。如果输出非零,我们调用sendmail向我发送电子邮件。

老实说,我希望有更多的Ruby方式来做这件事,但无法提出任何解决方案。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

我花了一些时间寻找你的问题的解决方案(这也是我的),并最终找到了类似于你的解决方案。

佣金任务:

namespace :test do

  task :a_test => :environment do
    test_output = `bundle exec rspec spec/lib/a_test`
    if tests_output.include?("Failures:\n")
      MyMailer.alert(test_output).deliver
    end
  end

end

<强>邮件程序:

class MyMailer < ActionMailer::Base

  def alert(tests_output)
    @tests_output = tests_output
    mail(:subject => '[ALERT] An error has occured')
  end

end

邮件程序视图(alert.text.erb):

<%= @tests_output.html_safe %>