#自定义转换器

 1 opts.accept(Hash) do |string|
hash = {}
string.split(',').each do |pair|
key,value = pair.split(/:/)
hash[key] = value
end
hash
end
opts.on('--custom ATTRS',Hash) do |hash|
custom_attributes = hash
end
A command like foo --custom foo:bar,baz:quux will result in custom_attributes getting the value
{ 'foo' => 'bar', 'baz' => 'quux' } .

使用小记

 #!/usr/bin/env ruby
require 'optparse'
options = {}
option_parser = OptionParser.new do |opts|
# 创建option -switch
#Option 作为switch,不带argument,用于将 switch 设置成 true 或 false
opts.on("-i", "--iteration") { options[:iteration] = true } # 创建optin -flag
opts.on("-u USER", /^(.+)\.(.+)$/) do |user|
options[:user] = user
end
opts.on("-p PASSWORD", "--uname ppp") do |password, ppp| options[:uname] = ppp
options[:password] = password
end #hash
servers = {dev: '127.0.0.1',
qa: 'qa001.example.com',
prod: 'www.example.com'}
opts.on('--server SERVER', servers) do |address|
options[:address]=address
end #default true or false
opts.on('--[no-]verbose') do |flg|
options[:flg]=flg
end
# Option 作为 flag,带一组用逗号分割的arguments,用于将arguments作为数组解析
opts.on('-a A,B', '--array A,B', Array, 'List of arguments') do |value|
options[:array] = value
end
end option_parser.parse!
puts options.inspect

ruby的optparse使用小记的更多相关文章

  1. 7.14 Git 工具 - 凭证存储

    凭证存储 如果你使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据. 然而,这对 HTTP 协议来说是不可能的 —— 每一个连接都是需要 ...

  2. Git 工具 - 凭证存储

    凭证存储 如果你使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据. 然而,这对 HTTP 协议来说是不可能的 —— 每一个连接都是需要 ...

  3. Ruby学习小记

    ruby安装 方法一:使用apt-get安装 可以直接使用两个命令完成Ruby的安装. # sudo apt-get update # sudo apt-get install ruby 或者 # s ...

  4. Ruby开发小记

    基础点 1.log打印 puts "Hello!" 2.拼接字符 value1 = "today" value2 = "#{value1} is Th ...

  5. ConCurrent in Practice小记 (3)

    ConCurrent in Practice小记 (3) 高级同步技巧 Semaphore Semaphore信号量,据说是Dijkstra大神发明的.内部维护一个许可集(Permits Set),用 ...

  6. ConCurrent in Practice小记 (2)

    Java-ConCurrent2.html :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0 ...

  7. 180行ruby代码搞定游戏2048

    最今在玩2048这款小游戏,游戏逻辑简单,很适合我这样的对于游戏新入行的人来实现逻辑.于是选择了最拿手的ruby语言来实现这款小游戏的主要逻辑.还是挺简单的,加起来4小时左右搞定. 上代码: requ ...

  8. logstash 学习小记

    logstash 学习小记 标签(空格分隔): 日志收集 Introduce Logstash is a tool for managing events and logs. You can use ...

  9. ruby 类库组成

    一. 核心类库: 二.标准类库: 文本 base64.rb 处理Base64编码的模块     csv.rb CSV(Comma Separated Values)库 ruby 1.8 特性     ...

随机推荐

  1. 非对称SVD电影推荐系统

    采用1M MovieLensz数据(80%train, 20%test, UserIDs range between 1 and 6040 ,MovieIDs range between 1 and ...

  2. C# 常用加密处理

    AES using System; using System.Security.Cryptography; using System.Text; namespace Common { public c ...

  3. 防止浏览器拦截的window.open新窗口方案

    背景 当前的浏览器为了保证用户体验,在很多场合下禁止了window.open打开新窗口,下面就给出一些方案,最大程度上的实现新窗口打开一个链接. 方案 //打开新链接方法实现 function win ...

  4. mfs-用户

    http://blog.csdn.net/liuyunfengheda/article/details/5260278 MFS总结 http://bbs.chinaunix.net/thread-16 ...

  5. TDDL:来自淘宝的分布式数据层

    淘宝根据自身业务需求研发了TDDL(Taobao Distributed Data Layer)框架,主要用于解决分库分表场景下的访问路由(持久层与数据访问层的配合)以及异构数据库之间的数据同步,它是 ...

  6. Maven最佳实践:版本管理

    什么是版本管理 首先,这里说的版本管理(version management)不是指版本控制(version control),但是本文假设你拥有基本的版本控制的知识,了解subversion的基本用 ...

  7. nginx linux 下开机自动启动

    这里使用的是编写shell脚本的方式来处理 vi /etc/init.d/nginx  (输入下面的代码) #!/bin/bash# nginx Startup script for the Ngin ...

  8. linux中常用目录的作用

    /bin 存放使用者最长用的命令,如:cp.ls.cat,等等. /boot 启动linux时使用的一些核心文件.  /dev 是device(设备)的缩写,这个目录下是所有linux的外围设备. D ...

  9. Android 程式开发:(十三)特殊碎片 —— 13.2 DialogFragment

    Android 程式开发:(十三)特殊碎片 —— 13.2 DialogFragment 原文地址 我们也可以创建另外一种碎片——DialogFragment.顾名思义,DialogFragment就 ...

  10. Android 不同文件名介绍

    Android 不同文件名介绍