Class: Fabrik::Database

Inherits:
Object
  • Object
show all
Defined in:
lib/fabrik/database.rb

Instance Method Summary collapse

Constructor Details

#initialize(&config) ⇒ Database

Returns a new instance of Database.



35
36
37
38
# File 'lib/fabrik/database.rb', line 35

def initialize &config
  @proxies = {}
  instance_eval(&config) unless config.nil?
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, &block) ⇒ Object



27
28
29
# File 'lib/fabrik/database.rb', line 27

def method_missing(method_name, *, &block)
  @proxies[method_name] || ((klass = class_from(method_name)).nil? ? super : register(klass))
end

Instance Method Details

#after_create_for(klass) ⇒ Object



23
# File 'lib/fabrik/database.rb', line 23

def after_create_for(klass) = proxy_for(klass).callback

#configure(&configuration) ⇒ Object



9
# File 'lib/fabrik/database.rb', line 9

def configure(&configuration) = instance_eval(&configuration)

#defaults_for(klass) ⇒ Object



19
# File 'lib/fabrik/database.rb', line 19

def defaults_for(klass) = proxy_for(klass).default_attributes

#functions_for(klass) ⇒ Object



25
# File 'lib/fabrik/database.rb', line 25

def functions_for(klass) = proxy_for(klass).functions

#register(klass, as: nil, &configuration) ⇒ Object Also known as: with



11
12
13
14
15
16
# File 'lib/fabrik/database.rb', line 11

def register(klass, as: nil, &configuration)
  blueprint_name = (as.nil? ? blueprint_name_for(klass) : as.to_s.pluralize).to_sym
  @proxies[blueprint_name] ||= Proxy.new(self, Blueprint.new(klass))
  @proxies[blueprint_name].configure(&configuration)
  @proxies[blueprint_name]
end

#respond_to_missing?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


31
32
33
# File 'lib/fabrik/database.rb', line 31

def respond_to_missing?(method_name, include_private = false)
  @proxies.key?(method_name) || !class_from(method_name).nil? || super
end

#unique_keys_for(klass) ⇒ Object



21
# File 'lib/fabrik/database.rb', line 21

def unique_keys_for(klass) = proxy_for(klass).unique_keys