[LIBRARY] 茁壮成长的ruby扩展库
自从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的命名规则