本周,Rails团队并没有休息:提交到edge分支的代码有50条,来自不同的开发者。以下是我精选的本周最有趣和最重要的核心代码新功能。
如果您一直关注Rails,那么本周您肯定听说过Metal:它让您的Rails应用程序中有了超快的端点,可以绕过路由和Action Controller,为您提供原始速度(当然,代价是失去了Action Controller中的所有功能)。这建立在最近使Rails成为Rack应用程序并暴露中间件堆栈的所有基础工作之上。与其详细解释Metal,不如提供一些您可以在这里阅读更多相关信息的链接:
一项重大更改将Action Controller会话存储的底层推到了Rack级别。这涉及大量的代码工作,尽管对您的Rails应用程序来说应该完全透明(此外,一些关于旧CGI会话处理程序的糟糕补丁已被移除)。尽管如此,它仍然很重要,原因很简单:非Rails的Rack应用程序可以访问与您的Rails应用程序相同的会话存储处理程序(因此,相同的会话)。此外,会话现在是延迟加载的(与框架其余部分的加载改进一致)。提交
一项相关的更改为cookie会话提供了持久的会话标识符,并与服务器端存储保持API兼容性。提交
Rails中处理MIME类型方式的代码有几处更改。首先,MIME::Type现在实现了=~运算符,当您需要检查是否存在具有同义词的类型时,可以使事情变得更加清晰。
if content_type && Mime::JS =~ content_type
# do something cool
end
Mime::JS =~ "text/javascript" => true
Mime::JS =~ "application/javascript" => true
另一项更改是,框架现在在各种地方检查javascript时使用Mime::JS,使其能够干净地处理这些替代方案。提交 提交
尽管Active Record基本上一直是Rails的核心部分,但人们仍然在这里那里优化性能和可用性。本周的提交包括停止在处理belongs_to关联时生成一些无用的查询(提交),在失败的find_by_foo!调用时提供更好的错误消息(提交),修复了一些关联预加载问题(提交和提交),以及使用MySQL适配器提高性能(提交)。
还记得几周前edge对日志文件中的噪音进行的清理吗?在此基础上,我们现在对任何Gem在堆栈跟踪输出中的显示进行了美化。提交
如果您使用的是edge版本,Rails现在强制要求Mocha 0.9.3或更高版本,以便您可以运行测试。提交
ETag处理已得到一些清理:Rails现在会在响应没有正文时,或者在发送文件时使用send_file,跳过发送ETag头。提交
如果您想追溯过去谁在Rails上工作过,这要归功于Xavier Noria进行的大规模数据收集和修补工作:他查看了所有的变更日志并规范化了作者姓名,这样我们就不会在其中看到令人困惑的姓名、用户名和电子邮件地址的混合了。提交