Вы хотите сделать:
i= items.erase(i);
, Который правильно обновит итератор для указания на местоположение после итератора, который Вы удалили.
task :t, [args] => [deps]
Когда вы передаете аргументы в задачи rake, вы можете запросить среду, используя параметр: needs. Например:
desc "Testing environment and variables"
task :hello, :message, :needs => :environment do |t, args|
args.with_defaults(:message => "Thanks for logging on")
puts "Hello #{User.first.name}. #{args.message}"
end
Обновлено в соответствии с комментарием @ Peiniau ниже
Что касается Rails> 3.1
task :t, arg, :needs => [deps] # deprecated
Используйте
task :t, [args] => [deps]
Просто для полноты, здесь пример от DOCS , упомянутых выше:
task :name, [:first_name, :last_name] => [:pre_name] do |t, args|
args.with_defaults(:first_name => "John", :last_name => "Dough")
puts "First name is #{args.first_name}"
puts "Last name is #{args.last_name}"
end
Примечания:
#with_defaults
Call , очевидно.
для ваших аргументов, даже если есть только один.
. args
- это пример Rake :: Taskarguments
. T
является экземпляром Rake :: Cass
.