我在生产服务器上有一个 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/