[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的命名规则

posted @ 2006-03-07 12:10  tech.cap  阅读(303)  评论(0编辑  收藏  举报