又过了一周,是时候再来了解一下 Edge Rails 的更新了。伙计们,你们这样让我很为难啊,不是吗?据我所知,这个周末是第一次 Rails 和 RailsBridge BugMash。按照我的统计,过去六天内 Rails master 大约有 300 次提交,其中大部分是在周末完成的。真是火热的考验啊!这里有很多真的很不错的东西,让我们开始吧
ActiveRecord(或者更确切地说是 ActiveModel)在周末加了很多验证功能。
validates_length_of
中添加了对 排除范围 的支持。所以,validates_length_of :name, :within => (5...10)
实际上会将有效长度限制在 5 和 9 之间。validates_length_of :name, :maximum => 10
现在将 默认允许 nil
值 进行验证。validates_format_of :without => /.../
,validates_format_of
有什么用呢?好吧,让我告诉你们,用处不大…Elliot Winkler 提供了一个补丁,专门解决这个问题。validates_with
。这个小奇迹现在允许您将验证代码放到一个外部类中。而这,我的朋友们,代表着对职责的更好封装,我敢保证它可以提高可读性,甚至可以在您的应用程序中共享验证逻辑,甚至可以在各个 gem 中共享验证逻辑。干得好,Jeff。周末对 ActiveResource 进行了许多更新。而且,我确信你们许多人会对其中的一些更新心存感激
ActiveResource.exists?
经过 Jatinder Singh 的优化。当然,这种优化意味着现在它真正起作用了。不会再引发 Net::HTTP 错误。多亏了 Dan Cheail,我们终于获得了 grouped_collection_select
帮助器。我的意思是说,没有谁能否认他们无法喜欢这一功能
class Continent < ActiveRecord::Base
class Country < ActiveRecord::Base
class City < ActiveRecord::Base
<%= grouped_collection_select(:city, :country_id, @continents, :countries, :name, :id, :name) %>
<select name="city[country_id]">
<optgroup label="Africa">
<option value="1">South Africa</option>
<option value="3">Somalia</option>
</optgroup>
<optgroup label="Europe">
<option value="7" selected="selected">Denmark</option>
<option value="2">Ireland</option>
</optgroup>
</select>
本周末,Mike Breen 为 rake routes
带来了一个小巧却极其实用的补丁。现在,您可以通过传入 CONTROLLER=foo
来过滤所列结果。那简直太棒了。就我个人而言,我手指已经习惯每当我键入 rake routes
时都会自动追加 “| grep foo
” 这个部分。显然,这已经成为我的肌肉记忆了。*sigh*
我将仅在此处提几项值得注意的提交来结束 BugMash 部分。当然,BugMash 并不局限于此,我还可以用更多压扁的 bug 和功能再写一篇文章,但它必须在某个地方结束,对吧?
textilize
帮助器进行。因此,现在 textilize("Testing <b>HTML</b>", :filter_html)
实际上将过滤 HTML!redirect_to(User)
- 请注意,此处 User
是一个类,而不是实例 - 作为 redirect_to(users_url)
的同义词。感谢 Niklas Holmgren 提供此功能。:file
交付方法时,您甚至可以为目录存储定义您自定的 :location
。model.destroyed?
。仅当您当前查看的实例已被成功销毁时,这个不错的方法才会返回 true
。解决了这些问题之后,以下是一些与 BugMash 无关的话题
了解道路与走上道路之间是不同的。本周对 Rails 进行了一些更新,主要集中在测试,并添加了 改进的 Oracle 数据库支持。很大一部分工作似乎来自一个人,Raimonds Simanovskis。我知道在 Rails 中讨论数据库时,主要有四大数据库 - SQLite、MySQL、PostgreSQL 还有另一款不方便提及的数据库 - 所以很好,我们把一些精力放在这个房间里 800 磅重的怪物身上也无妨。
此更新修复了由于偏移和限制导致的测试用例失败、空字符串存储为 null、来自 ActiveRecord.sum 的数字结果、Oracle 在连接上没有使用 “AS” 关键字以及其他很多问题。
José Valim 和 Yehuda Katz(当然还有许多其他人)付出了极大的努力重新设计 Rails 渲染器。事实上,大多数渲染代码现在都存放在一个通用对象 AbstractController::Responder 中。当然,这可能不是它们最终安息的地方,但有趣的是,一旦许多渲染逻辑集合在一起,核心团队就能快速识别和设计逻辑,以实现显着的速度提升。有一次,Yehuda 甚至提到一个经过测试的基准显示,比 Rails 2.3“部分渲染速度提高 10%”。
我知道在 RailsEnvy 播客中我抱怨花了这么长时间才能看到 Rails 3.0 的发布,但请注意,这帮家伙正在做一些非常棒的工作。我看到了广泛的测试和基准,以及一些非常智能的重构。我们真的有一些更好的东西推出。
我相信我本周漏掉了几个重要和/或有趣的提交。所以,如果其中一个是你做的,我深表歉意。我与社区中的其他成员当然感谢你花这个周末做的努力,Rails 肯定因此变得更好。所以,要向所有的 BugMasher 表示感谢,感谢,再感谢。并且,如果你错过了参加这轮比赛的机会,我们当然欢迎你参加下一轮。
如果你希望获得更简短的此内容的音频摘要,你应当看看 Envy Labs 新推出的播客 - Ruby5;一个 5 分钟时长的播客,每两周发布一次,涵盖 Ruby 和 Ruby on Rails 新闻。
照片:布鲁克林大桥虚拟之旅,作者 Diego_3336