自從rails紅火以後, ruby的社區明顯比以前壯大了不少(小弟我也是因為rails才學習ruby的),所謂人多好辦事, 各種ruby的擴充類庫也如雨後春筍一般冒出來,他們的特點就是版本低(很少上1.0), 名字都取得很有個性, 主要的目的也是增強或者替換ruby內建的標準庫, 下面列出幾個我在用的
rio : Ruby I/O Comfort Class
rio就是一個ruby內建io類的封裝, 主要的作用範圍就是操作檔案, 抓網頁, 壓縮解壓, 處理CSV等等IO操作, 現在的版本是0.3.7, rio使用起來及其簡單
例子如下
拷貝或者增加內容到字串對象中
rio('afile') > astring # copy rio('afile') >> astring # append
拷貝或者增加內容到檔案中
rio('afile') < astring # copy rio('afile') << astring # append
他的官方網站裡面有詳細的樣本, 如果是經常要在linux上維護檔案的朋友請不要錯過.
commandline:命令列增強
commandline是一個簡化命令列介面的庫,他直接替代內建的optparser來解析使用者使用的參數,同時還能自動列印出標準的usage/version/help提示資訊,還提供Unix, Gnu, X Toolkit三種風格支援
使用commanline很簡單,繼承他的CommandLine::Application即可
例子如下
class App < CommandLine::Application def initialize version "0.0.1" author "Author Name" copyright "2005, Jim Freeze" synopsis "[-dhV] param_file out_file" short_description "A simple app example that takes two arguments." long_description "app5 is a simple application example that supports "+ "three options and two commandline arguments." option :version option :debug option :help expected_args :param_file, :out_file end def main puts "main called" puts "@param_file = #{@param_file}" puts "@out_file = #{@out_file}" end end
通過執行ruby xxx.rb -h指令就可以立刻看到標準的help被列印出來
NAME xxx.rb - A simple app example that takes two arguments. DESCRIPTION xxx.rb is a simple application example that supports three options and two commandline arguments. OPTIONS --version,-V Displays application version. --debug,-d Sets debug to true. --help,-h Displays help page. AUTHOR: Author Name Copyright (c) 2005, Jim Freeze
fastercsv:更快更簡單的csv庫
顧名思義, 就是更快csv處理庫, 偶看maillist上看到的評測是要快10倍(內建的實在太慢了,以至於fastercsv快它10倍還是比python版本的慢), 同時使用起來也比內建csv簡單, 一看就會(除非你根本不知道csv是什麼)
比如讀取一個csv檔案
FasterCSV.foreach("path/to/file.csv") do |row| puts row[0] puts row[2] end
使用header支援讀取cvs檔案
FasterCSV.foreach("path/to/file.csv",:headers=>true) do |row| #第一行是header,會自動忽略 puts row['fielda'] puts row['fieldc'] end
需要提醒的是它使用require 'faster_csv',類名卻是FasterCSV,不是很符合ruby的命名規則