class Hanami::Extensions::DB::SliceConfiguredRepo
@api private @since 2.2.0
Attributes
slice[R]
Public Class Methods
new(slice)
click to toggle source
Calls superclass method
# File lib/hanami/extensions/db/repo.rb, line 34 def initialize(slice) super() @slice = slice end
Public Instance Methods
extended(repo_class)
click to toggle source
# File lib/hanami/extensions/db/repo.rb, line 39 def extended(repo_class) define_inherited configure_repo(repo_class) define_new end
inspect()
click to toggle source
# File lib/hanami/extensions/db/repo.rb, line 45 def inspect "#<#{self.class.name}[#{slice.name}]>" end
Private Instance Methods
configure_repo(repo_class)
click to toggle source
# File lib/hanami/extensions/db/repo.rb, line 64 def configure_repo(repo_class) repo_class.struct_namespace struct_namespace end
define_inherited()
click to toggle source
Calls superclass method
# File lib/hanami/extensions/db/repo.rb, line 51 def define_inherited root_for_repo_class = method(:root_for_repo_class) define_method(:inherited) do |subclass| super(subclass) unless subclass.root root = root_for_repo_class.(subclass) subclass.root root if root end end end
define_new()
click to toggle source
Calls superclass method
# File lib/hanami/extensions/db/repo.rb, line 68 def define_new resolve_rom = method(:resolve_rom) define_method(:new) do |**kwargs| super(container: kwargs.fetch(:container) { resolve_rom.() }) end end
resolve_rom()
click to toggle source
# File lib/hanami/extensions/db/repo.rb, line 76 def resolve_rom slice["db.rom"] end
root_for_repo_class(repo_class)
click to toggle source
# File lib/hanami/extensions/db/repo.rb, line 80 def root_for_repo_class(repo_class) return unless repo_class.to_s.end_with?("Repo") slice.inflector.demodulize(repo_class) .then { slice.inflector.underscore(_1) } .then { _1.gsub(/_repo$/, "") } .then { slice.inflector.pluralize(_1) } .then { _1.to_sym } end
struct_namespace()
click to toggle source
# File lib/hanami/extensions/db/repo.rb, line 90 def struct_namespace @struct_namespace ||= if slice.namespace.const_defined?(:Structs) slice.namespace.const_get(:Structs) else slice.namespace.const_set(:Structs, Module.new) end end