Class: ROM::Configuration

Inherits:
Object
  • Object
show all
Extended by:
Forwardable, Notifications
Includes:
ConfigurationDSL
Defined in:
core/lib/rom/configuration.rb

Constant Summary collapse

NoDefaultAdapterError =
Class.new(StandardError)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name) ⇒ Gateway (private)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns gateway if method is a name of a registered gateway

Returns:



130
131
132
# File 'core/lib/rom/configuration.rb', line 130

def method_missing(name, *)
  gateways.fetch(name) { super }
end

Instance Attribute Details

#environmentObject (readonly)

Returns the value of attribute environment.



29
30
31
# File 'core/lib/rom/configuration.rb', line 29

def environment
  @environment
end

#notificationsObject (readonly)

Returns the value of attribute notifications.



37
38
39
# File 'core/lib/rom/configuration.rb', line 37

def notifications
  @notifications
end

#setupObject (readonly)

Returns the value of attribute setup.



33
34
35
# File 'core/lib/rom/configuration.rb', line 33

def setup
  @setup
end

Class Method Details

.register_event(id, info = EMPTY_HASH) ⇒ Object Originally defined in module Notifications

Register an event

Parameters:

  • id (String)

    A unique event key

  • info (Hash) (defaults to: EMPTY_HASH)

Instance Method Details

#commands(name, &block) ⇒ Object Originally defined in module ConfigurationDSL

Command definition DSL

Examples:

setup.commands(:users) do
  define(:create) do
    input NewUserParams
    result :one
  end

  define(:update) do
    input UserParams
    result :many
  end

  define(:delete) do
    result :many
  end
end

#mappers(&block) ⇒ Object Originally defined in module ConfigurationDSL

Mapper definition DSL

#plugin(adapter, spec, &block) ⇒ Plugin Originally defined in module ConfigurationDSL

Configures a plugin for a specific adapter to be enabled for all relations

Examples:

config = ROM::Configuration.new(:sql, 'sqlite::memory')

config.plugin(:sql, relations: :instrumentation) do |p|
  p.notifications = MyNotificationsBackend
end

config.plugin(:sql, relations: :pagination)

Parameters:

  • adapter (Symbol)

    The adapter identifier

  • spec (Hash<Symbol=>Symbol>)

    Component identifier => plugin identifier

Returns:

#relation(name, options = EMPTY_HASH, &block) ⇒ Object Originally defined in module ConfigurationDSL

Relation definition DSL

Examples:

setup.relation(:users) do
  def names
    project(:name)
  end
end

#use(plugin, options = {}) ⇒ Configuration

Apply a plugin to the configuration

Parameters:

  • plugin (Mixed)

    The plugin identifier, usually a Symbol

  • options (Hash) (defaults to: {})

    Plugin options

Returns:



68
69
70
71
72
73
74
75
76
77
78
# File 'core/lib/rom/configuration.rb', line 68

def use(plugin, options = {})
  if plugin.is_a?(Array)
    plugin.each { |p| use(p) }
  elsif plugin.is_a?(Hash)
    plugin.to_a.each { |p| use(*p) }
  else
    ROM.plugin_registry[:configuration].fetch(plugin).apply_to(self, options)
  end

  self
end