文章:深入浅出理解 BackgrounDRb 插件

  • Ezra Zygmuntowicz
  • 苏锐

2007 年 9 月 17 日

话题:RubyRuby on Rails语言 & 开发架构

用 Ruby on Rails 开发各种类型的 Web 应用确实是很棒的选择,但是这些 Web 应用所在的问题领域中,你可能经常会遇到一些复杂精密的计算或者长时间运行的后台任务。但是由于你的 Web 应用被限制在 HTTP 协议的 request/response 模型下,这可能就会造成一些问题。你知道应该如何运行漫长的后台任务而不让你的 Web 服务器超时么?你又知道该如何把这些任务的进度告诉用户么?

使用 Rails 插件 BackgrounDRb 可以解决上面的问题。在 Ruby 的标准库中已经预制了 DRb(Distributed Ruby),为使用 TCP/IP 或 Unix sockets 通过网络存取 Ruby 对象提供了一个简单的 API。而 BackgrounDRb 提供了一个框架方便在 Rails 以外的独立线程中运行后台任务,从而摆脱了 request/response 模型。而且使用 DRb 你可以在 Rails 中使用钩子函数为用户提供任务进度或者状态更新。

对于 BackgrounDRb 的作用,插件的作者告诉我们他正在用 BackgrounDRb 做什么:

  • 下载并缓存 RSS,这样可以做一个 RSS 聚合器。
  • 使用 watir 驱动浏览器在后来访问网站并收集信息,做自动的屏幕抓取。
  • Xen VPS 的自动创建和系统管理任务。
  • 后台为 Hyper Estraier 和 erret 创建索引。
  • 连接 Rails 和 IRC 机器人。

阅读全文:深入浅出理解 BackgrounDRb 插件

RubyRuby on Rails语言 & 开发架构