Skip to content

Commit

Permalink
Preregister refactor (#17)
Browse files Browse the repository at this point in the history
* Build preregister on register; guard against undeducible class names

* Move preregister above since to give some nicer flow

* Remove preregister added on the Abstract provider
  • Loading branch information
kaspth authored Aug 12, 2023
1 parent 896a6e3 commit c32b7db
Showing 1 changed file with 6 additions and 13 deletions.
19 changes: 6 additions & 13 deletions lib/oaken.rb
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,6 @@ def initialize(type)
def update(id, **attributes)
self.class.define_method(id) { find(id) }
end

def preregister(names)
names.each do |name|
register name
end
end
end

class Stored::Memory < Stored::Abstract
Expand Down Expand Up @@ -70,17 +64,16 @@ module Data
extend self

class Provider < Struct.new(:data, :provider)
def register(type, key = Oaken.inflector.tableize(type.name))
stored = provider.new(type)
data.define_method(key) { stored }
end

def preregister(names)
names.each do |name|
stored = provider.new(Oaken.inflector.classify(name).constantize)
data.define_method(name) { stored }
type = Oaken.inflector.classify(name).safe_constantize and register type, name
end
end

def register(type, key = Oaken.inflector.tableize(type.name))
stored = provider.new(type)
data.define_method(key) { stored }
end
end

def self.provider(name, provider)
Expand Down

0 comments on commit c32b7db

Please sign in to comment.