Module: ENM

Defined in:
lib/enm.rb,
lib/enm/enum.rb,
lib/enm/types.rb,
lib/enm/version.rb,
lib/enm/database.rb,
lib/enm/namespace.rb

Overview

A parser and introspecter for PostgreSQL enums, made to be used within Rails or other Ruby applications.

Defined Under Namespace

Modules: Types Classes: AlreadyConfiguredError, Database, DatabaseNotFoundError, DuplicatedTypeError, DuplicatedValueError, Enum, EnumConflictError, EnumNotFoundError, Error, IOError, InvalidDefaultError, Namespace, NoCurrentNamespaceError, NoDefaultDatabaseError, ParseError, SerializationError, UnknownVersionError

Constant Summary collapse

VERSION =
"0.1.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.currentENM::Namespace (readonly)

Returns:

Raises:



76
77
78
# File 'lib/enm.rb', line 76

def current
  Thread.current.thread_variable_get(:enm_current_namespace) || raise(ENM::NoCurrentNamespaceError, "No current namespace set")
end

Class Method Details

.[](name) ⇒ ENM::Database?

Parameters:

  • name (String, Symbol)

Returns:

See Also:



86
# File 'lib/enm.rb', line 86

def [](name) = current[name]

.configure_current(force: false) {|builder| ... } ⇒ void

This method returns an undefined value.

Configure current namespace for the gem.

Parameters:

  • force (Boolean) (defaults to: false)

Yield Parameters:

Yield Returns:

  • (void)

Raises:



65
66
67
68
69
70
71
# File 'lib/enm.rb', line 65

def configure_current(force: false, &block)
  namespace = Namespace.build(&block)

  raise AlreadyConfiguredError, "Current namespace is already configured" if current? && !force

  Thread.current.thread_variable_set(:enm_current_namespace, namespace)
end

.current?Boolean

Whether a current namespace is set.

Returns:

  • (Boolean)


81
# File 'lib/enm.rb', line 81

def current? = Thread.current.thread_variable?(:enm_current_namespace)

.dryDry::Types::Type

Returns:

  • (Dry::Types::Type)

See Also:



90
# File 'lib/enm.rb', line 90

def dry(...) = current.dry(...)

.getENM::Enum

Returns:

See Also:



94
# File 'lib/enm.rb', line 94

def get(...) = current.get(...)

.reset!void

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.

This method returns an undefined value.

Reset the current namespace, caches, etc.



100
101
102
103
104
# File 'lib/enm.rb', line 100

def reset!
  Thread.current.thread_variable_set(:enm_current_namespace, nil)

  ENM::Enum.cache.clear
end