访问次数
我的另一个总结性博客: todototry 大米粒

令人惊叹的 ruby 程序库

Ruby 錦囊妙計

Thor

http://asciicasts.com/episodes/242-thor

Sinatra

Sinatra 是一套微型的 Web 小框架,適合小型的 Web App 或是作為 Web services 之用。它不是 MVC,也沒有內建 ORM,它最重要的是提供了一套 Routing 路由系統。

Jekyll

Jekyll 是一個非常簡單的靜態網站產生工具,讓你可以共用 Layout、使用 Textile 或Markdown 格式等。它也非常適合拿來建立 Blog。

這份講義就是用 Jekyll 產生的。

處理檔案

Ruby 內建的 File 函式庫 http://ruby-doc.org/core/classes/File.html

處理 HTTP

請參考 HTTP client 這篇文章。

YAML

Rails 的資料庫設定檔 database.yml 是用一種叫 : YAML Ain’t Markup Language 的格式所撰寫,檔案打開來,看起來就像一般的 plain 設定檔,非常容易修改。

YAML 的設計首要目標就是要讓使用者容易看懂,可以和 script 語言搭配良好。用途有 資料序列化 data serialization、設定檔 configuration settings、log files、Internet messaging、filtering 等。網站上已知有支援的 script 語言有 Python,Ruby,Java,PHP,Perl,Javascript 等。

require ‘yaml’

ps2 = YAML.load_file(‘example.yaml’)
ps2.each do |it|
  puts it.inspect
end

JSON

Rails 內建就有 ActiveSupport JSON,用法如下:

ActiveSupport::JSON.encode( [ {:a => 1 , :b => 2 } , "c", "d" ] )
=> "[{\"a\":1,\"b\":2},\"c\",\"d\"]" 	

ActiveSupport::JSON.decode( "[{\"a\":1,\"b\":2},\"c\",\"d\"]" )
=> [{"a"=>1, "b"=>2}, "c", "d"] 

Yajl-ruby 則是一套底層用C,比較快的 JSON parser。

如果要替換 Rails 內建的 JSON 函式庫,請在 config/application.rb 最下方加入:

ActiveSupport::JSON.backend = 'Yajl'

XML

Rails 內建使用 Ruby 的 XML 函式庫 Builder

Nokogiri 是一套基於 libxml2 的函式庫,效能較佳。可參考 Getting Started with Nokogiri一文介紹用法。

如果要替換 Rails 內建的 XML 函式庫,請在 config/application.rb 最下方加入:

ActiveSupport::XmlMini.backend = 'Nokogiri'

PDF

Prawn 可以產生 PDF,支援 Unicode。

PDFKit 則是另一個有趣的產生方式,透過 HTML/CSS 轉 PDF。

CSV

FasterCSV 是一套 pure Ruby 的 CSV 函式庫,也被 Ruby 1.9 納入內建。

Excelsior 則是一套底層用C實作,較快的 CSV 函式庫。

YAML, JSON, XML, CSV 等都有底層改用 C 的函式庫,適合於正式上線環境,缺點是需要編譯,在一些特殊環境可能無法運作,例如最新版的 Nokogiri 就不支援 Windows 了。而純 Ruby 實作的版本就沒有這個問題。

posted @ 2011-09-18 20:42  fandyst  阅读(413)  评论(0编辑  收藏  举报