Reffering that answer Stavo cercando di utilizzare OptionParser
per analizzare gli argomenti rake
. Ho semplificato l'esempio da lì e ho dovuto aggiungere due ARGV.shift
per farlo funzionare.Come analizzare gli argomenti di rake con OptionParser
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
Questa è l'uscita:
$ rake user:create -- -u foo
ARGV: ["user:create", "--", "-u", "foo"]
ARGV: ["-u", "foo"]
user: foo
Presumo ARGV.shift
non è il modo in cui dovrebbe essere fatto. Mi piacerebbe sapere perché non funziona senza di esso e come risolverlo in modo corretto.
Con 'ARGV.shift' funzionare con o senza' = '. Sfortunatamente senza 'ARGV.shift' non funziona ogni volta che uso' = 'oppure no. – pawel7318
La domanda è come analizzare argomenti generali in Rake, invece di come passare argomenti in rails 'Rake. –