Starting from rake 10.1.0 you can use Rake::TaskArguments#extras :
task :environment task :course, [:name] => :environment do |t, args| name = args[:name] numbers = args.extras puts "name = #{name}" puts "numbers = #{numbers.join ','}" end
Output:
$ rake "course[COURSE NAME, 123, 456, 789]" name = COURSE NAME numbers = 123,456,789
For a rake <10.1.0, you could create a list of reasonably large arguments. This hack will work up to 26 numbers:
task :course, [:name, *:a..:z] => :environment do |t, args| name = args[:name] numbers = args.values_at(*:a..:z).compact puts "name = #{name}" puts "numbers = #{numbers.join ','}" end
source share