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

你可能感兴趣的:(library)