diff --git a/lib/strokedb/document.rb b/lib/strokedb/document.rb index 58d469bb..aa3815a2 100644 --- a/lib/strokedb/document.rb +++ b/lib/strokedb/document.rb @@ -148,8 +148,6 @@ def add_meta(meta, opts = {}) if _module @document.extend(_module) - _module.setup_callbacks(@document) rescue nil - if opts['call_initialization_callbacks'] @document.send!(:execute_callbacks_for, _module, :on_initialization) @document.send!(:execute_callbacks_for, _module, :on_new_document) if @document.new? @@ -341,7 +339,6 @@ def self.from_raw(store, raw_slots, opts = {}) #:nodoc: collect_meta_modules(store, raw_slots['meta']).each do |meta_module| unless doc.is_a? meta_module doc.extend(meta_module) - meta_module.setup_callbacks(doc) rescue nil end end diff --git a/lib/strokedb/document/meta.rb b/lib/strokedb/document/meta.rb index 1b4bdabf..1ed174c1 100644 --- a/lib/strokedb/document/meta.rb +++ b/lib/strokedb/document/meta.rb @@ -252,6 +252,13 @@ def document(store=nil) metadocs.size > 1 ? metadocs.inject { |a, b| a + b }.make_immutable! : metadocs.first end + def extended(obj) + setup_callbacks(obj) if obj.is_a?(Document) + end + + + private + def make_document(store=nil) raise NoDefaultStoreError.new unless store ||= StrokeDB.default_store @meta_initialization_procs.each {|proc| proc.call }.clear @@ -301,7 +308,7 @@ def add_callback(name,uid=nil, &block) @callbacks ||= [] @callbacks << Callback.new(self, name, uid, &block) end -public + def setup_callbacks(doc) return unless @callbacks @callbacks.each do |callback|