ruby - 我在 OptionParser 中有三个标志,但它只能访问其中两个
问题描述
我正在使用 Ruby 构建 CLI gem,并且正在使用 OptionParser 添加带有参数的标志。每当使用参数调用一个标志时,就会调用一个函数。我有三个标志。我的问题是,当我运行-h
命令查看可用的选项(标志)时,它只显示其中三个(跳过中间一个),即使我尝试使用该标志,(帮助中未列出)它运行最后一个标志的代码。这是我的标志代码:
def city_weather
options = {}
OptionParser.new do |opts|
opts.banner = "Welcome to El Tiempo! \n Usage: cli [options]"
opts.on('-today', 'Get today\'s weather') do |today|
options[:today] = today
weather_today(ARGV.first)
end
opts.on('-av_max', 'Get this week\'s average maximum temperature') do |av_max|
options[:av_max] = av_max
week_average_max(ARGV.first)
end
opts.on('-av_min', 'Get this week\'s average minimum temperature') do |av_min|
options[:av_min] = av_min
week_average_min(ARGV.first)
end
end.parse!
ARGV.first
end
这是-av_max
不起作用的标志。当我运行get 时执行-av_max
。week_average_min(ARGV.first)
当我在-h
这里运行命令时,它显示的是:
Welcome to El Tiempo!
Usage: cli [options]
-today Get today's weather
-av_min Get this week's average minimum temperature
我的问题是,OptionParser 是否可以使用三个标志?如果是这样,我怎样才能使这个中间单位工作?
解决方案
您需要为长参数添加另一个破折号:
opts.on('--av_min', 'Get this week\'s average minimum temperature') do |av_min|
options[:av_min] = av_min
week_average_min(ARGV.first)
end
推荐阅读
- node.js - Heroku 上的粘性会话
- javascript - net::ERR_CERT_COMMON_NAME_INVALID 使用 fetch API 向 metaweather API 发出请求时出错
- swift - 如何在所有 iPhone 设备和模拟器中将 UIView 定位在 UIImage 之上
- sql - 用 DB2 / SQL 中的另一个大表过滤一个大表的最佳方法?
- r - 如何在 R 中使用具有多个条件的排名函数 Row_number
- python - 用 Python 抓取网页,BeautifulSoup findAll() 找不到所有
- html - 尝试播放视频时,iframe 继续在另一个选项卡上打开链接
- javascript - 如何修复节点 js 中的设置标头?
- sql - 如果任何值为空,我将如何在选择上返回一个空字符串?
- amazon-web-services - Amazon Cognito 注销终端节点未按预期工作