email - 每天在生产服务器上测试 Rails 应用程序,并自动回复电子邮件

标签 email ruby-on-rails-3 testing

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

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

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

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

老实说,我希望有一种更像 Rubyish 的方式来做到这一点,但无法提出任何解决方案。有帮助吗?

最佳答案

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

抽取任务:

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

邮件程序 View (alert.text.erb):

<%= @tests_output.html_safe %>

关于email - 每天在生产服务器上测试 Rails 应用程序,并自动回复电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5051011/

相关文章:

c# - SMTP 发送邮件已取消

ruby-on-rails - Rails 中的模型版本控制

javascript - 插入 div 时运行脚本

ruby-on-rails - 返回值的 RSpec 序列和从 stub 中引发的错误

android - 如何在 Android 中获取 Facebook 用户的电子邮件 ID?

python - 发送电子邮件 : raise SMTPAuthenticationError(code, 时出错)

ruby /node.js + 亚马逊 SES : Is there an Amazon SES API?

selenium - 如何在 TestNG.xml 中确定包执行的优先级?

c++ - C/C++调试原理/核心话题

java - 如何用Java从数据库发送电子邮件?