2009年10月22日,星期四

社区亮点

发布者:Gregg Pollack

Rails社区持续不断的创新能力总是令我印象深刻。以下是过去一个月的一些亮点。这些故事都来自Ruby5播客,该播客每周两次报道Ruby和Rails社区的所有新闻。

认证

Plataformatec公司才华横溢的巴西团队本周发布了Devise gem,为您的Rails应用提供了一个新的认证选项。Devise是一个Rails引擎,它建立在Warden(一个Rack认证框架)之上。这使得Devise比其他Rails认证库更加灵活,绝对值得一看。

另一方面,如果您的应用程序需要更简单的东西,可以看看Terry Heath的OpenID Rails Engine。您应该可以在大约10分钟内完成一个认证系统的搭建和运行,而且无需担心存储用户的密码。

有用的库

由于Twitter推出了新的Streaming API,我们不再需要每5秒轮询一次来发现新推文。要立即开始使用,请查看Intridea的TweetStream Gem

通过Rails 2.3,我们获得了在Rails应用中使用Rack Middleware的能力。如果您还不了解Rack中间件是什么,请观看此屏幕录像。另外,如果您想了解一些使用它的想法,可以看看CodeRack Middleware Contest,这是一个开发更有用、高质量Rack中间件的比赛。

几周前,我听说了一个名为Validatious的javascript库,它提供了非侵入性的javascript来实现客户端表单验证。我知道您在想什么:“如果我同时进行客户端和服务器端验证,就会有重复验证逻辑的代码,这让我想要呕吐。”先别吐,先看看Jonas Grimfelt的Validatious on Rails插件,它可以通过您现有的模型验证来自动生成客户端验证。

优化与性能

如果您的Rails应用需要能够同时处理大量用户上传文件(想想Flickr),那么您可能想看看ModPorter,这是Pratik Naik和Michael Koziarski创建的一个Apache模块和Rails插件。ModPorter在传入的多部分请求到达您的Rails应用之前解析并将文件存储到磁盘,这样您的Rails进程就不会被阻塞。我们听说通过第三方模块也支持nginx。

当您处理ActiveRecord这样的数据库抽象时,确保您编写了最优化的数据库查询非常重要。如果您担心您的应用执行的查询过多,或者没有正确使用预加载,那么您可能想看看Richard Huang开发的Bullet插件。当您缺少:include或应该使用计数器缓存时,Bullet实际上可以给您Growl通知。

您的mongrels消耗的RAM超过150兆,您知道为什么吗?您怀疑可能是Ruby到处漏内存吗?那您可能错了,Sudara Williams将在《That’s not a Memory Leak, It’s Bloat》中告诉您。更可能的情况是您实例化了数千个ActiveRecord对象,Sudara给出了一些如何找到它们的建议。

代码清理

Presenter模式对于封装可能使控制器臃肿的代码非常有用,这些代码可能不属于您的模型。Dmyto Shteflyuk写了一篇关于使用Presenter的精彩介绍,如果您还没有使用Presenter,值得一读。

在Ruby和Javascript之间发送复杂的数据集并不总是那么容易。您不希望有一种方法可以将Ruby的hash直接自动转换为javascript Map吗?如果是,那么您可能想看看Erick Schmitt的jsvars,它就是做这个的。

部署

您可能已经听说过Chef(系统集成框架),但您是否知道您也可以使用chef-deploy从Chef部署您的Ruby应用?Ezra Zygmuntovich创建了这个gem,它允许您运行Chef食谱,并且如果食谱通过(并且只通过),则以类似于capistrano的方式部署您的代码。

如果您正在将Rails集群部署到Amazon EC2,那么除了使用Chef之外,另一个解决方案是Matthew Conway开发的名为rubber的gem。Rubber使部署成为一等公民,将所有服务器配置文件存储在您的Rails应用中,以便在版本控制下快速进行调整。它开箱即用,包含了许多部署最佳实践,并且可以随时进行扩展或缩减。

媒体

您是否曾经想在您所在的城市举办Rails教程,但又因为要编写所有课程材料而感到气馁?那么您需要查看Rails Bridge Open Workshop项目,那里有您需要的所有免费课程材料!您不再有借口不传播Rails的福音了。

最后,如果您正在寻找更多的Rails屏幕录像,您可能想看看Teach Me To Code,如果您正在寻找更多的Rails阅读材料,那么可以看看Olimpiu Metiu的Rails Magazine的最近几期。

感谢阅读!如果您有任何想推广的Ruby或Rails新闻,请通过发送电子邮件至ruby5@envylabs.com发送给Ruby5播客

图片来源:Blue Sky on Rails,作者:ecstaticistAnalog Solutions 606 Mod,作者:FormicationRainbow,作者:One Good BumblebeeOrange County Security,作者:henningBroom,作者:fatmanremember,作者:tochisDarwin Was Right About Media Players!,作者:Neeku