天天看點

常用Ruby Gems清單

本文介紹 Ruby 社群裡面那些特别熱門的 Gem ,以下 Gem 可以在 rubygems.org 找到。

常用Ruby Gems清單

twitter-bootstrap-rails

http://twitter.github.com/bootstrap/ http://twitter.github.com/bootstrap/ https://rubygems.org/gems/twitter-bootstrap-rails https://rubygems.org/gems/twitter-bootstrap-rails https://github.com/seyhunak/twitter-bootstrap-rails https://github.com/seyhunak/twitter-bootstrap-rails

來自 Twitter 的 Bootstrap,是一套完整的前台 CSS 架構。 以簡潔,優雅著稱于世。 被無數攻城獅所青睐, 又讓無數程式猿審美疲勞。

twitter-bootstrap-rails Gem 封裝了 Boostrap CSS 等代碼

Devise

用于快速建構使用者功能,如:注冊,登陸,個人設定,找回密碼...

OmniAuth

如果你需要在項目中實作三方平台(如: Twitter, Facebook, 新浪微網誌, 騰訊 QQ)賬号登​陸的支援,那你需要用上它。

RailsCast:

Part1 Part2

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 的方式設定語言,具體參見

上面對于 Formtastic 的介紹。而 simple_form 和 Formtastic 功能類似,但它的寫法還要簡單一些。

Whenever

Linux 裡面有 Cron 可以幫助我們定期執行一些任務,但是 Cron 手動寫起來很是麻煩,尤其是前面時間周期的定義, Whenever 可以幫助我們用更人性化的方式編寫 Cron 任務,具體參見

上面關于 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 也同樣有效。

也有相應的介紹。

god

Ruby 程序監控工具