def self.set name, value = nil, &default_block
raise ArgumentError, "cannot provide both a value and a block" if
value and default_block unless
value == :per_thread
raise ArgumentError, "cannot set reserved name: '#{name}'" if
Rake::RemoteTask.reserved_name?(name) unless $TESTING
name = name.to_s
Rake::RemoteTask.per_thread[name] = true if
default_block && value == :per_thread
Rake::RemoteTask.default_env[name] = Rake::RemoteTask.env[name] =
default_block || value
Object.send :define_method, name do
Rake::RemoteTask.fetch name
end
end