我在生产服务器上有一个rails应用程序,我需要24小时测试一致性(测试测试应用程序调用的各种API)。
如果服务器上的测试失败,我需要立即通知(可能通过电子邮件),以便我们可以解决问题。
我们使用Capistrano进行部署,并使用whenver gem进行Cron处理。
我们正在考虑使用when在运行“rake test”的生产目录中运行shell脚本,并使用“$?”检查该命令的输出。如果输出非零,我们调用sendmail向我发送电子邮件。
老实说,我希望有更多的Ruby方式来做这件事,但无法提出任何解决方案。有什么帮助吗?
答案 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 %>