def link(*things)
unless none?
raise "Illegal state for link: #{state}"
end
things.each do |thing|
case thing
when DataMapper::Adapters::AbstractAdapter
@adapters[thing] = :none
when DataMapper::Repository
link(thing.adapter)
when DataMapper::Model
link(*thing.repositories)
when DataMapper::Resource
link(thing.model)
when Array
link(*thing)
else
raise "Unknown argument to #{self.class}#link: #{thing.inspect} (#{thing.class})"
end
end
if block_given?
commit { |*block_args| yield(*block_args) }
else
self
end
end