Module: N1Loader::ArLazyPreload::Loadable::ClassMethods

Included in:
Loadable::ClassMethods
Defined in:
lib/n1_loader/ar_lazy_preload/loadable.rb

Overview

:nodoc:

Instance Method Summary collapse

Instance Method Details

#n1_optimized(name, loader = nil, &block) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/n1_loader/ar_lazy_preload/loadable.rb', line 7

def n1_optimized(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

    send("#{loader_name}_reload")
  end
end