Sha256: 5e7365f7ea5f18b43003c0572e0b8d3fc25506f72b183c50d5f8298fdbab83db

Contents?: true

Size: 728 Bytes

Versions: 5

Compression:

Stored size: 728 Bytes

Contents

# frozen_string_literal: true

module N1Loader
  module ArLazyPreload
    module Loadable
      module ClassMethods # :nodoc:
        def n1_load(name, loader = nil, &block)
          name, loader_name, loader_variable_name = super

          define_method(loader_name) do
            loader = instance_variable_get(loader_variable_name)

            return loader if loader
            if respond_to?(:lazy_preload_context) && ContextAdapter.new(lazy_preload_context).try_preload_lazily(name)
              return instance_variable_get(loader_variable_name)
            end

            instance_variable_set(loader_variable_name, self.class.send(loader_name).new([self]))
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
n1_loader-1.1.0 lib/n1_loader/ar_lazy_preload/loadable.rb
n1_loader-1.0.0 lib/n1_loader/ar_lazy_preload/loadable.rb
n1_loader-0.1.2 lib/n1_loader/ar_lazy_preload/loadable.rb
n1_loader-0.1.1 lib/n1_loader/ar_lazy_preload/loadable.rb
n1_loader-0.1.0 lib/n1_loader/ar_lazy_preload/loadable.rb