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 - это не то, как это должно быть сделано. Я хотел бы знать, почему он не работает без него и как правильно его исправить.
