本文介紹 Ruby 社區裏面那些特別熱門的 Gem ,如下 Gem 能夠在 rubygems.org 找到。html
http://twitter.github.com/bootstrap/前端
https://rubygems.org/gems/twitter-bootstrap-railsjava
https://github.com/seyhunak/twitter-bootstrap-railsgit
來自 Twitter 的 Bootstrap,是一套完整的前臺 CSS 框架。 以簡潔,優雅著稱於世。 被無數攻城獅所青睞, 又讓無數程序猿審美疲勞。程序員
twitter-bootstrap-rails Gem 封裝了 Boostrap CSS 等代碼github
用於快速構建用戶功能,如:註冊,登錄,我的設置,找回密碼...web
若是你須要在項目中實現三方平臺(如: Twitter, Facebook, 新浪微博, 騰訊 QQ)帳號登錄的支持,那你須要用上它。redis
分頁控件,幾乎全部 Rails App 都在用, 其中 will_paginate 比較老,
應用案例較多, kaminari 更新, 性能和兼容性更好bootstrap
這兩個都是上傳組件, Paperclip 是老牌產品了,也是幾乎絕大多數項目都有在用它,它能夠幫你處理上傳圖片,裁減,定義不一樣的圖片尺寸,幾乎很完美。而 Carrierwave 是後起之秀,功能和 Paperclip
差很少,但它還能夠管理除圖片以外的東西,並且靈活性更高( ruby-china
就是用它)。 對比: Paperclip 官方只支持 ActiveRecord 但相對穩定, 而 Carrierwave
比較靈活支持更多的 orm, 好比 mongoid
表格控件,針對 ActiveRecord,超級強大,支持任意字段排序,過濾,具體看它的 Demo.
基於 Sphinx 的全文搜索組件,要搞全文搜索功能就用它。
項目常常會有一些配置信息,Settinglogic 能夠幫你將寫在 YAML 裏面的配置信息很方便的調用。而 RailsSettings 也是相似的功能,只不過它是將配置信息存放在數據庫裏面,以即可以隨時在線上修改。同時也帶來性能的問題,你能夠用改進版 rails-settings-cached,他會將配置緩存下來。
一些應用中會用到爲不一樣用戶設定不一樣功能的權限,你能夠試試 Cancan 這個 gem 他能夠幫你制定一套完善的方案,Railscasts 上面還有個使用介紹,能夠看一下。
它是一個基於 Redis 存儲的數據存儲插件,用於幫助咱們存放一些須要快速存儲的數據,如 頁面訪問量,贊數量,或者一些列表數據,如 Followers,數據將會存入 Redis 中,而它用起來很簡單,它能夠和 Rails ActiveSupport (簡單來講,也就是 Model 裏面)結合,使這些數據存取像一個普通字段通常。
採集數據時咱們須要解析複雜的 HTML 結構,從中得到須要的數據,Nokogiri 能夠幫助咱們完美的處理不一樣網頁上面不一樣的 HTML 結構,而且有很好的編碼處理能力,用它你不用擔憂頁面是 GB2312 仍是 GBK 仍是 UTF-8,它都能很好的處理,解析結構能夠用相似 jQuery 的 CSS Selector 的方式查找,非常方便。曾經用過 Ruby 的好幾個相似插件,最終發現 Nokogiri 纔是最好的。
Rails 爲咱們帶來和一改傳統的表單構件方式,可是通過實際的使用,咱們漸漸發覺這樣依然仍是不夠「敏捷」,咱們須要更加簡便並具備更細緻規範的表單,因此有了 Formtastic ,它用起來比 Rails 默認的 form 更加簡潔,可是卻具備更多的功能,你能夠爲每一個字段設定 help-text 放到文本框下面,並能夠走 I18n 的方式設置語言,具體參見 Railscasts 上面對於 Formtastic 的介紹。而 simple_form 和 Formtastic 功能相似,但它的寫法還要簡單一些。
Linux 裏面有 Cron 能夠幫助咱們按期執行一些任務,可是 Cron 手動寫起來非常麻煩,尤爲是前面時間週期的定義, Whenever 能夠幫助咱們用更人性化的方式編寫 Cron 任務,具體參見 Railscasts 上面關於 Whenever 的介紹。
有時候一些任務的執行會很慢,而這些任務咱們並不要求須要立刻返回結果 (好比:發送郵件,生成圖片縮略圖),那咱們能夠選擇將這些任務放到後臺執行,以便於頁面不會長時間等待執行。Resque 和 delayed_job 能夠幫助咱們很容易的搞定這件事情。二者區別在於 Resque 能夠有不一樣的隊列,而 Delayed_job 只有一個,但它能夠設定優先級。此外 Delayed_job 除了支持 ActiveRecord,還支持其它 ORM(具體參見 這裏)。Delayed_job 使用更加簡單。如何選擇,這個就要看使用場景了,Resque 上面對比介紹說,若是你須要有大量的任務須要放到隊列裏面執行,而且不要求優先級,那你就用它吧。DelayedJob不適合處理大量的任務, 瓶頸是基於數據庫的, 也不支持隊列. 操做上比 Resque 要方便. 而 Resque 是基於 redis 的, 使得生成任務比較迅速, 性能上比 DelayedJob 要好. 惟一的缺點就是不支持定時任務、可是裝個 resque-scheduler 能夠彌補這一點. 並且 Resque 還有 web 管理界面, 方便查看任務和追蹤錯誤.
隨着項目愈來愈大,文件愈來愈多,咱們漸漸發如今開發環境下,項目執行慢得讓人沒法忍受。這個問題緣由在於 Rails Development 環境沒有緩存全部的類 (Model,Controller,Helper,Views...) 文件,每次刷新頁面都將會從新載入,而載入過程其實是緩慢的,這個源於 Ruby 的性能問題,因此 rails-dev-boost 搞了緩存的機制來解決這個問題,用它能夠 10 倍提高大項目在開發環境的速度問題,不過某些項目可能不起效果,好比用了 ActiveAdmin。 用這個 Gem 在 rails3.1 下提速效果更爲明顯, 由於 rails3.1 開發環境默認狀態下每次請求 assets 哪怕是一張圖片也要從新加載全部的程序文件.
在設計 Views 的時候,咱們會將一些不少頁面都須要用到的局部功能抽象成 Partials 可是咱們會發現這樣動做比較麻煩,由於數據依然還須要在不一樣的 Controller 裏面載入。而 Cells 能夠幫助咱們搞定這個問題,它能夠將一個局部功能,從數據調用到 View 生成,所有作成一個獨立的組件,使用的時候一行代碼就搞定,無需其餘的調用,同時還能夠在 Cell 裏面設定緩存,將緩存顆粒化。並且於 Partials 相比,它的效率好不少。
Rails 3.1 爲咱們帶來了 Asset Pipeline ,能夠幫助咱們處理 JS,CSS 壓縮的功能,可是以前的版本如何實現 CSS,JS 壓縮呢?Smurf 能夠,用它很是簡單,裝上就能夠了,不用修改代碼。同時你們能夠用另外個改進版本 smurf-huacnlee 它能夠另外處理 CSS 裏面 image 地址的問題,會在後面加上時間戳 (相似 image_tag 的效果),以解決圖片更新後,用戶瀏覽器緩存更新的問題。
將一些事情做爲 daemon 來啓動,相似 Debian 的 service foo start 好比 用來管理 Resque 的啓動和重啓,會變得很簡單。
隨着 Mobile App 的增多,不少時候咱們在作用 Rails 作 API Base 項目時,rails 自帶的 C 和 V 層顯得過於繁雜,grape 能夠幫助咱們快速的構建和 Rails 完美融合的 API 接口。
如今愈來愈多網站爲了改善用戶體驗,使用 JavaScript 來進行客戶端驗證。對於程序員來講,也所以增長多一份工做。而每每客戶端的驗證邏輯跟服務端的驗證邏輯幾乎同樣,若是要另外再寫一次驗證代碼,實在不夠 DRY,client_side_validations 正是爲解決此問題要出現。client_side_validations 會讀取服務端的驗證邏輯並生成對應的客戶端驗證邏輯(依賴 jQuery),讓你幾乎不用增長任何前端代碼就可實現客戶驗證。
這是一個輔助 ActiveRecord 的組件,讓你能夠簡單的實現按某年,某月,某日,或者星期幾,來查詢數據,用起來很是簡單,省下麻煩的條件組合,此外,它還能夠查詢上一篇,下一篇相似的功能。
一個很是簡單的角色設定模塊,不強制要求認證,支持資源對象範圍。
這個 gem 能夠實現把服務端的數據傳到 js 中. 用法很簡單.
簡單強大的 HTTP/REST 客戶端,跟 Grape 配合起來很完美
簡單強大的調試工具, 輕量級的工具. 直接在終端調試方便又直接
強大的 seed
編寫代碼總有方圓,費心費力寫文檔,還不如用這個工具來控制代碼質量。
當前繪圖 JS 庫中 Highcharts 很是優秀,rubyist 使用這個 gem 來管理和編寫須要的圖。
它用一個更好的,更有用的錯誤頁替換標準的 Rails 錯誤頁面,對 Rack middleware 也一樣有效。Railscasts 也有相應的介紹。
Ruby 進程監控工具
你也能夠參考RubyGems排名站點 ruby-toolbox.com
via Ruby China Wiki