我已经阅读了很多关于我的问题的变化,但我似乎无法找到一个与我想要做的事情完全匹配的。
我有一个基本上有两个版本的脚本:"默认"将运行一系列强制方法,第二个版本将运行相同的方法,然后使用一系列辅助方法。我希望从命令行(类似$ script.rb second_version
)和"默认"触发第二个版本。根本没有参数输入触发的选项(因为它会更频繁地使用,所以只有$ script.rb
)。
我用ARGV尝试了这个:
second_version = ARGV[0]
if second_version
second_version_methods
else
main_version
end
这在技术上有效,但问题是在main_version脚本中运行的第一个方法是需要用户输入的方法。最终发生的是字符串" second_version"会自动传递给该方法作为我不想要的值。
基本上,有没有办法让命令行参数仅指定以特定方式运行的条件,然后一旦完成,它就会丢弃输入?我已经研究过optparse,但它的功能似乎有点多余。
谢谢!
答案 0 :(得分:1)
ARGV
不是readonly,因此您可以使用第一个输入:
if ARGV[0] == 'second_version'
ARGV.shift # removes the first element
second_version_methods
else
main_version
end
如果你想保持ARGV完整(这是一个更好的主意),你可以这样做:
arguments = ARGV.dup
if arguments[0] == 'second_thing'
arguments.shift
# ...