本文介绍 Ruby 社区里面那些特别热门的 Gem ,以下 Gem 可以在 rubygems.org 找到。
twitter-bootstrap-rails
http://twitter.github.com/bootstrap/
https://rubygems.org/gems/twitter-bootstrap-rails
https://github.com/seyhunak/twitter-bootstrap-rails
来自 Twitter 的 Bootstrap,是一套完整的前台 CSS 框架。 以简洁,优雅著称于世。 被无数攻城狮所青睐, 又让无数程序猿审美疲劳。
twitter-bootstrap-rails Gem 封装了 Boostrap CSS 等代码
Devise
用于快速构建用户功能,如:注册,登陆,个人设置,找回密码...
OmniAuth
如果你需要在项目中实现三方平台(如: Twitter, Facebook, 新浪微博, 腾讯 QQ)账号登陆的支持,那你需要用上它。
will_paginate 和 Kaminari
分页控件,几乎所有 Rails App 都在用, 其中 will_paginate 比较老,
应用案例较多, kaminari 更新, 性能和兼容性更好
Paperclip 和 Carrierwave
这两个都是上传组件, Paperclip 是老牌产品了,也是几乎绝大多数项目都有在用它,它可以帮你处理上传图片,裁减,定义不同的图片尺寸,几乎很完美。而 Carrierwave 是后起之秀,功能和 Paperclip
差不多,但它还可以管理除图片之外的东西,而且灵活性更高( ruby-china
就是用它)。 对比: Paperclip 官方只支持 ActiveRecord 但相对稳定, 而 Carrierwave
比较灵活支持更多的 orm, 比如 mongoid
WiceGrid
表格控件,针对 ActiveRecord,超级强大,支持任意字段排序,过滤,具体看它的 Demo.
thinking-sphinx
基于 Sphinx 的全文搜索组件,要搞全文搜索功能就用它。
Settingslogic 和 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 接口。
ClientSideValidations
现在越来越多网站为了改善用户体验,使用 JavaScript 来进行客户端验证。对于程序员来说,也因此增加多一份工作。而往往客户端的验证逻辑跟服务端的验证逻辑几乎一样,如果要另外再写一次验证代码,实在不够 DRY,client_side_validations 正是为解决此问题要出现。client_side_validations 会读取服务端的验证逻辑并生成对应的客户端验证逻辑(依赖 jQuery),让你几乎不用增加任何前端代码就可实现客户验证。
by_star
这是一个辅助 ActiveRecord 的组件,让你可以简单的实现按某年,某月,某日,或者星期几,来查询数据,用起来非常简单,省下麻烦的条件组合,此外,它还可以查询上一篇,下一篇类似的功能。
rolify
一个非常简单的角色设定模块,不强制要求认证,支持资源对象范围。
gon
这个 gem 可以实现把服务端的数据传到 js 中. 用法很简单.
rest-client
简单强大的 HTTP/REST 客户端,跟 Grape 配合起来很完美
pry
简单强大的调试工具, 轻量级的工具. 直接在终端调试方便又直接
Seed Fu
强大的 seed
rails_best_practices
编写代码总有方圆,费心费力写文档,还不如用这个工具来控制代码质量。
lazy_high_charts
当前绘图 JS 库中 Highcharts 非常优秀,rubyist 使用这个 gem 来管理和编写需要的图。
Better Errors
它用一个更好的,更有用的错误页替换标准的 Rails 错误页面,对 Rack middleware 也同样有效。Railscasts 也有相应的介绍。
god
Ruby 进程监控工具