Class: Tzispa::Data::Repository
- Inherits:
-
Object
- Object
- Tzispa::Data::Repository
- Defined in:
- lib/tzispa/data/repository.rb
Constant Summary collapse
- LOCAL_REPO_ROOT =
:repository
Instance Attribute Summary collapse
-
#adapters ⇒ Object
readonly
Returns the value of attribute adapters.
-
#root ⇒ Object
readonly
Returns the value of attribute root.
Instance Method Summary collapse
- #[](model, repo_id = nil) ⇒ Object
-
#initialize(config, root = nil) ⇒ Repository
constructor
A new instance of Repository.
- #load!(domain) ⇒ Object
- #models(repo_id = nil) ⇒ Object
- #module_const(repo_id = nil) ⇒ Object
- #register(model_id, model_class, repo_id, config) ⇒ Object
Constructor Details
#initialize(config, root = nil) ⇒ Repository
Returns a new instance of Repository.
27 28 29 30 31 32 |
# File 'lib/tzispa/data/repository.rb', line 27 def initialize(config, root = nil) @config = config @root = root || LOCAL_REPO_ROOT @pool = {} @adapters = AdapterPool.new config end |
Instance Attribute Details
#adapters ⇒ Object (readonly)
Returns the value of attribute adapters.
23 24 25 |
# File 'lib/tzispa/data/repository.rb', line 23 def adapters @adapters end |
#root ⇒ Object (readonly)
Returns the value of attribute root.
23 24 25 |
# File 'lib/tzispa/data/repository.rb', line 23 def root @root end |
Instance Method Details
#[](model, repo_id = nil) ⇒ Object
34 35 36 37 38 39 |
# File 'lib/tzispa/data/repository.rb', line 34 def [](model, repo_id = nil) selected_repo = repo_id || adapters.default raise UnknownModel.new(model, selected_repo) unless pool.key?(selected_repo) && pool[selected_repo].key?(model.to_sym) pool[selected_repo][model.to_sym] end |
#load!(domain) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/tzispa/data/repository.rb', line 50 def load!(domain) @config.each do |id, cfg| Mutex.new.synchronize do pool[id] = {} Sequel::Model.db = adapters[id] load_config_repo(id, cfg) domain.include module_const(id) end end self end |
#models(repo_id = nil) ⇒ Object
41 42 43 |
# File 'lib/tzispa/data/repository.rb', line 41 def models(repo_id = nil) pool[repo_id || adapters.default].values end |
#module_const(repo_id = nil) ⇒ Object
45 46 47 48 |
# File 'lib/tzispa/data/repository.rb', line 45 def module_const(repo_id = nil) selected_repo = repo_id || adapters.default pool[selected_repo][:__repository_module] ||= repository_module(selected_repo) end |
#register(model_id, model_class, repo_id, config) ⇒ Object
62 63 64 65 66 67 68 69 70 |
# File 'lib/tzispa/data/repository.rb', line 62 def register(model_id, model_class, repo_id, config) model_class.db = @adapters[repo_id] if config.respond_to? :extensions config.extensions.split(',').each do |ext| model_class.db.extension ext.to_sym end end @pool[repo_id][model_id.to_sym] = model_class end |