版本 18, 最后更新于

推荐 Gem 列表

本页用于介绍 Ruby 社区里面那些特别热门的 Gem ,以下 Gem 可以在 rubygems.org 找到。

实用的 RubyGems 排名站点 www.ruby-toolbox.com

Devise

https://github.com/plataformatec/devise

用于快速构建用户功能,如:注册,登陆,个人设置,找回密码...

OmniAuth

https://github.com/intridea/omniauth

如果你需要在项目中实现三方平台(如: Twitter, Facebook, 新浪微博, 腾讯QQ)账号登陆的支持,那你需要用上它。

RailsCast: Part1 Part2

will_paginate 和 Kaminari

分页控件,几乎所有 Rails App 都在用,其中 will_paginate比较老,应用案例较多, kaminari 更新,性能和兼容性更好

Github: will_paginate Kaminari

Paperclip 和 Carrierwave

这两个都是上传组件, Paperclip 是老牌产品了,也是几乎绝大多数项目都有在用它,它可以帮你处理上传图片,裁减,定义不同的图片尺寸,几乎很完美。而 Carrierwave 是后起之秀,功能和 Paperclip 差不多,但它还可以管理除图片之外的东西,而且灵活性更高( ruby-china 就是用它)。
对比: Paperclip 官方只支持ActiveRecord但相对稳定, 而Carrierwave比较灵活支持更多的orm,比如mongoid

Github: Paperclip Carrierwave

WiceGrid

https://github.com/leikind/wice_grid

表格控件,针对 ActiveRecord,超级强大,支持任意字段排序,过滤,具体看它的 Demo.

thinking-sphinx

https://github.com/freelancing-god/thinking-sphinx

基于 Sphinx 的全文搜索组件,要搞全文搜索功能就用它。

Settinglogic 和 RailsSettings

项目经常会有一些配置信息,Settinglogic 可以帮你将写在 YAML 里面的配置信息很方便的调用。而 RailsSettings 也是类似的功能,只不过它是将配置信息存放在数据库里面,以便可以随时在线上修改。同时也带来性能的问题,你可以用改进版 rails-settings-cached,他会将配置缓存下来。

CanCan

一些应用中会用到为不同用户设定不同功能的权限,你可以试试 Cancan 这个 gem 他可以帮你制定一套完善的方案,Railscasts 上面还有个使用介绍,可以看一下。

redis-objects

它是一个基于 Redis 存储的数据存储插件,用于帮助我们存放一些需要快速存储的数据,如 页面访问量,赞数量,或者一些列表数据,如 Followers,数据将会存入 Redis 中,而它用起来很简单,它可以和 Rails ActiveSupport (简单来说,也就是 Model 里面)结合,是这些数据存取像一个普通字段一般。

Nokogiri

采集数据是我们需要解析复杂的 HTML 结构,从中获得需要的数据, Nokogiri 可以帮助我们完美的处理不同网页上面不同的 HTML 结构,并且有很好的编码处理能力,用它你不用担心页面是 GB2312 还是 GBK 还是 UTF-8,它都很很好的处理,解析结构可以用类似 jQuery 的 CSS Selector 的方式查找,很是方便。曾经用过 Ruby 的好几个类似插件,最终发现 Nokogiri 才是最好的。

Formtastic 和 simple_form

Rails 为我们带来和一改传统的表单构件方式,但是经过实际的使用,我们渐渐发觉这样依然还是不够“敏捷”,我们需要更加简便并具有更细致规范的表单,所以有了 Formtastic ,它用起来比 Rails 默认的 form 更加简洁,但是却具有更多的功能,你可以为每个字段设定 help-text 放到文本框下面,并可以走 I18n 的方式设置语言,具体参见 Railscasts 上面对于 Formtastic 的介绍。而 simple_form 和 Formtastic 功能类似,但它的写法还要简单一些。

Whenever

Linux 里面有 Cron 可以帮助我们定期执行一些任务,但是 Cron 手动写起来很是麻烦,尤其是前面时间周期的定义, Whenever 可以帮助我们用更人性化的方式编写 Cron 任务,具体参见 Railscasts 上面关于 Whenever 的介绍。

Resque 和 Delayed_job

有时候一些任务的执行会很慢,而这些任务我们并不要求需要马上返回结果(比如:发送邮件,生成图片缩略图),那我们可以选择将这些任务放到后台执行,以便于页面不会长时间等待执行。Resque 和 delayed_job 可以帮助我们很容易的搞定这件事情。两者区别在于 Resque 可以有不同的队列,而 Delayed_job 只有一个,但它可以设定优先级。此外Delayed_job除了支持ActiveRecord,还支持其它ORM(具体参见这里)。Delayed_job 使用更加简单。如何选择,这个就要看使用场景了,Resque 上面对比介绍说,如果你需要有大量的任务需要放到队列里面执行,并且不要求优先级,那你就用大吧。DelayedJob不适合处理大量的任务,瓶颈是基于数据库的,也不支持队列.操作上比Resque要方便.而Resque是基于redis的,使得生成任务比较迅速,性能上比DelayedJob要好.唯一的缺点就是不支持定时任务,但是装个resque-scheduler可以弥补这一点.而且Resque还有web管理界面,方便查看任务和追踪错误.

rails-dev-boost

随着项目越来越大,文件越来越多,我们渐渐发现在开发环境下,项目执行慢得让人无法忍受。这个问题原因在于 Rails Development 环境没有缓存所有的类(Model,Controller,Helper,Views...)文件,每次刷新页面都将会重新载入,而载入过程实际上是缓慢的,这个源于 Ruby 的性能问题,所以 rails-dev-boost 搞了缓存的机制来解决这个问题,用它可以 10 倍提升大项目在开发环境的速度问题,不够某些项目可能不起效果,比如用了 ActiveAdmin。
用这个Gem在rails3.1下提速效果更为明显,因为rails3.1 开发环境默认状态下每次请求assets哪怕是一张图片也要重新加载所有的程序文件.

Cells

在设计 Views 的时候,我们会将一些很多页面都需要用到的局部功能抽象成 Partials 但是我们会发现这样动作比较麻烦,因为数据依然还需要在不同的 Controller 里面载入。而 Cells 可以帮助我们搞定这个问题,它可以将一个局部功能,从数据调用到 View 生成,全部做成一个独立的组件,使用的时候一行代码就搞定,无需其他的调用,同时还可以在 Cell 里面设定缓存,将缓存颗粒化。而且于 Partials 相比,它的效率好很多。

Smurf

Rails 3.1 为我们带来了 Asset Pipeline ,可以帮助我们处理 JS,CSS 压缩的功能,但是之前的版本如何实现 CSS,JS 压缩呢?Smurf 可以,用它非常简单,装上就可以了,不用修改代码。同时大家可以用另外个改进版本 smurf-huacnlee 它可以另外处理 CSS 里面 image 地址的问题,会在后面加上时间戳 (类似 image_tag 的效果),以解决图片更新后,用户浏览器缓存更新的问题。

daemon-spawn

将一些事情作为 daemon 来启动,可以类似 Debian 的 service foo start 比如 用来管理 Resque 的启动和重启,会变得很简单。

Grape

随着Mobile App的增多,很多时候我们在做用Rails做API Base项目时,rails自带的C和V层显得过于繁杂,grape可以帮助我们快速的构建和Rails完美融合的API接口,具体见Github

ClientSideValidations

现在越来越多网站为了改善用户体验,使用JavaScript来进行客户端验证。对于程序员来说,也因此增加多一份工作。而往往客户端的验证逻辑跟服务端的验证逻辑几乎一样,如果要另外再写一次验证代码,实在不够DRY,client_side_validations正是为解决此问题要出现。client_side_validations会读取服务端的验证逻辑并生成对应的客户端验证逻辑(依赖jQuery),让你几乎不用增加任何前端代码就可实现客户验证。具体参见Github

by_star

这是一个辅助 ActiveRecord 的组件,让你可以简单的实现按某年,某月,某日,或者星期几,来查询数据,用起来非常简单,省下麻烦的条件组合,此外,它还可以查询上一篇,下一篇类似的功能。

rolify

Very simple Roles library without any authorization enforcement supporting scope on resource object.

gon

这个gem可以实现把服务端的数据传到js中.用法很简单.

rest-client

简单强大的HTTP/REST客户端,跟Grape配合起来很完美

pry

简单强大的调试工具,轻量级的工具.直接在终端调试方便又直接

本页贡献者:

5aec84cd0b5479a0d1d89b6ffa2a9a20 Small_6c5369e0e1aa53683c00434d76019800 E9ed4664dfd7ea664ccc5813de4d1fd7 60fbc6a9f457b3d7401a54e61e468857 5894706ab8c4aa40257d022e28129f66 Fccfa1da2e64d9b169eabbbeae8e5306 8a505779fb988a5667c36c46d18ba667 Small_c99baedbb441a05905843974ba884bcb 7c91a341ea3ed637ee2fde2ab529f863 30fcee313005cf38c2e572bdd0c6600e Dda6c4388751b5713ab51668c50ded1d C7b8c0b4ef05e68e2c92cd912eca414b Ab989bfcd6ed51d34250507f7a248653 Small_2d504b570dc919f2e083c143bcbadf8f
Small_00a81f363cf669a911c56dd733a054fa ruby_sky 发表于与

Nokogiri 抓到的数据如何进行分段处理?

Fccfa1da2e64d9b169eabbbeae8e5306 HungYuHei 发表于与

Delayed_job不单单支持ActiveRecord,还可以支持其它ORM
https://github.com/collectiveidea/delayed_job/wiki/backends

Small_6c5369e0e1aa53683c00434d76019800 huacnlee 发表于与

@HungYuHei 现在你可以可以修改 Wiki 了,修正一下吧

04440d2b7409cadad9e86b02c3ab4870 gene_wu 发表于与

做API,我最近在用Acts as Api
可以自定义xml,json转换字段,并且支持ActiveRecord的关联关系。有效的为不同目的的API提供不同的字段。而无需重载as_json等方法。

04440d2b7409cadad9e86b02c3ab4870 gene_wu 发表于与

做API,我最近在用Acts as Api
可以自定义xml,json转换字段,并且支持ActiveRecord的关联关系。有效的为不同目的的API提供不同的字段。而无需重载as_json等方法。

9d667e0bdb24f9323111682a6ae8cea1 xufeng 发表于与
Small_91e60e18845cfdfe503dcd5477eb3a61 hunter 发表于与

rails-dev-boost 已经不需要了,rails 3.2只载入改动的文件