Sha256: f59097e3d80c4fa15f3bcac3891acb7cf9e0200b645fd3bd17c5af204e89b355

Contents?: true

Size: 1.2 KB

Versions: 3

Compression:

Stored size: 1.2 KB

Contents

require 'singleton'

module RailsConnector
  module Meta
    class EagerLoader
      include Singleton
      def initialize
        # Rails.logger.debug "EagerLoader: I am eager to start working"
        @obj_classes = {}
        # Rails 3.1 contains a bug that screws attribute loading
        # attributes are set to assigned classes
        if ::Rails::VERSION::MAJOR == 3 && ::Rails::VERSION::MINOR == 1
          RailsConnector::ObjClass.all.each do |obj_class|
            obj_class.custom_attributes
            @obj_classes[obj_class.name] = obj_class
          end
        else
          RailsConnector::ObjClass.includes(:custom_attributes_raw).all.each do |obj_class|
            @obj_classes[obj_class.name] = obj_class
          end
        end
      end

      def obj_class(name)
        name = name.to_s
        if !@obj_classes.fetch(name, nil).nil?
          # puts "EagerLoader: I've already loaded it: #{name}"
          @obj_classes[name]
        else
          # puts "EagerLoader: NO HAVE: #{name}"
          @obj_classes[name] ||= RailsConnector::ObjClass.find_by_obj_class_name(name)
        end
      end

      def forget_obj_class(name)
        @obj_classes.delete(name.to_s)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
infopark_rails_connector_meta-1.6.1 lib/meta/eager_loader.rb
infopark_rails_connector_meta-1.5.2 lib/meta/eager_loader.rb
infopark_rails_connector_meta-1.5.1 lib/meta/eager_loader.rb