module GlobalID::Locator
def use(app, locator = nil, &locator_block)
end
@search_client.search name: gid.model_name, id: gid.model_id
def locate(gid, options = {})
class BarLocator
GlobalID::Locator.use :bar, BarLocator.new
Using a class:
end
FooRemote.const_get(gid.model_name).find(gid.model_id)
GlobalID::Locator.use :foo do |gid, options|
Using a block:
The locator can be either a block or a class.
Useful when different apps collaborate and reference each others' Global IDs.
Tie a locator to an app.
def use(app, locator = nil, &locator_block) raise ArgumentError, 'No locator provided. Pass a block or an object that responds to #locate.' unless locator || block_given? URI::GID.validate_app(app) @locators[normalize_app(app)] = locator || BlockLocator.new(locator_block) end