Sha256: 5e5c87d1c7619fabec53009c99d20d81aed8eeb4ee78445f9a258b95235c8836

Contents?: true

Size: 945 Bytes

Versions: 5

Compression:

Stored size: 945 Bytes

Contents

module CouchPotato
  module Persistence
    
    def self.persistent_classes #:nodoc:
      @persistent_classes ||= []
    end

    def self.reload_persistent_classes #:nodoc:
      persistent_classes.each do |clazz|
        eval clazz.name
      end
    end
    
    
    def self.included_with_class_reloading(base) #:nodoc:
      persistent_classes << base
      included_without_class_reloading(base)
    end
    
    class << self
      alias_method :included_without_class_reloading, :included
      alias_method :included, :included_with_class_reloading
    end
  end
  
  Database.class_eval do
    def load_document_with_class_reloading(id)
      Persistence.reload_persistent_classes
      load_document_without_class_reloading id
    end
    
    alias_method :load_document_without_class_reloading, :load_document
    alias_method :load_document, :load_document_with_class_reloading
    alias_method :load, :load_document
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
couch_potato-0.2.20 rails/reload_classes.rb
couch_potato-0.2.19 rails/reload_classes.rb
couch_potato-0.2.18 rails/reload_classes.rb
couch_potato-0.2.17 rails/reload_classes.rb
couch_potato-0.2.16 rails/reload_classes.rb