2008 年 12 月 5 日星期五

此周内幕 Rails

发布者 Mike Gunderloy

2008 年 11 月 29 日至 12 月 5 日版

Rails 2.3 开发仍在持续进行。以下是本周发生内容的概述。

应用程序模板

Rails 现在融合了 Jeremy McAnally 的 rg 应用程序生成器。这意味着我们现在可以内置基于模板到 Rails 中来生成应用程序;如果你有一套在每个应用程序中都包含的插件(除许多其他用例外),你只需在运行 rails 命令时设置一次模板并一遍又一遍地重复使用即可。Pratik Naik 在其博客上对该功能进行了 全面撰写提交

改进发现

即使 Active Record 用于与数据库通信的备受推崇的代码也能得到改进,本周还有一些改进得到 check in。首先,为在 has_and_belongs_to_many 关联中预加载记录而生成的 SQL 切除了一个额外的“AS”,这提高了其与某些数据库的协作能力。此外,我们在针对已分组发现的过滤记录的 find(以及 has_many 和 has_and_belongs_to_many 关联)上有一个 :having 选项。正如拥有深厚 SQL 背景的人所了解的那样,这允许基于已分组结果进行过滤


developers =  Developer.find(:all, :group => "salary", 
  :having => "sum(salary) >  10000", :select => "salary")

提交 提交

机架集成

Rails 与 Rack 的紧密集成持续进行中。本周,我们见证了 Rails 中备受推崇的 CGI 处理器的终结,以及利用 Rack 处理 FCGI。还对 Rails 测试进行了一些重构,以便在与 Rack 协作时更加顺畅。 提交 提交

配置文件清理

多年来,environment.rb 默认文件变得有些杂乱,其中包含注释、随机文档以及大多数人不需要的设置。DHH 花了几分钟时间清理乱序,该文件 当前状态 精简了许多。作为清理工作的一部分,会话存储配置已移至其自身文件中。 提交

不再有进程脚本

如果你是一名依赖 inspector、reaper 和 spawner 脚本进行部署的(相当少见的)Rails 开发人员,你需要知道这些脚本不再包含在核心 Rails 中。对于使用类似 Passenger 等当前替换方案重新部署的 Rails 应用程序,这些脚本只是多余的负担。但是如果你需要这些脚本,你可以通过 irs_process_scripts 插件获取副本。提交

奇闻异事

Rails 检查 IP 欺骗这一事实可能会给流量主要来自蜂窝电话的网站带来困扰,因为它们的代理通常不会正确设置。如果是这种情况,你现在可以设置 ActionController::Base.ip_spoofing_check = false 来完全禁用该检查。提交

Rails.root 现在返回 Pathname 对象,这意味着你可以直接使用它配合 join 方法对使用 File.join 的现有代码进行 清理提交

ActionController::Dispatcher 现在实现了自己的中间件堆栈,你可以通过运行 rake middleware 看到它。提交

Gem 加载对缺少的依赖关系更加智能。提交

auto_link 现在能够正确对生成的电子邮件链接应用选项(例如::target 和 :class)。提交