Повторяя этот ответ Я пытался использовать OptionParser
для анализа rake
аргументов. Я упростил пример оттуда, и мне пришлось добавить два ARGV.shift
, чтобы он заработал.
require 'optparse'
namespace :user do |args|
# Fix I hate to have here
puts "ARGV: #{ARGV}"
ARGV.shift
ARGV.shift
puts "ARGV: #{ARGV}"
desc 'Creates user account with given credentials: rake user:create'
# environment is required to have access to Rails models
task :create => :environment do
options = {}
OptionParser.new(args) do |opts|
opts.banner = "Usage: rake user:create [options]"
opts.on("-u", "--user {username}","Username") { |user| options[:user] = user }
end.parse!
puts "user: #{options[:user]}"
exit 0
end
end
Это результат:
$ rake user:create -- -u foo
ARGV: ["user:create", "--", "-u", "foo"]
ARGV: ["-u", "foo"]
user: foo
Я полагаю, ARGV.shift
- это не то, что нужно делать. Хотелось бы узнать, почему без него не работает и как правильно исправить.
exit(0)
иrake
без выброса"Don't know how to build task 'foo'"
при попытке сrake user:create -- -u foo
? что, если вы не хотите, чтобыrake
останавливался на достигнутом?OptionParser#parse
не позволяет использовать _7 _... - person rellampec   schedule 18.01.2020