Sha256: 608caa7b63fbde3a8b22990b2cd3a405999ddbd802e4d42b0a5e8a454e881560
Contents?: true
Size: 730 Bytes
Versions: 2
Compression:
Stored size: 730 Bytes
Contents
# frozen_string_literal: true module BulkLoader class Attribute def initialize(cattr, target) @class_attribute = cattr @target = target @lazy_of ||= {} end def lazy(name) @lazy_of[name] ||= BulkLoader::Lazy.new(@target) end private def method_missing(name, *args) return super unless @class_attribute.include?(name) names = [name].freeze define_singleton_method(name) do attr = lazy(name) @class_attribute.load(names, [self]) unless attr.loaded? attr.get end public_send(name) end def respond_to_missing?(name, include_private) return true if @class_attribute.include?(name) super end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
bulk_loader-0.4.0 | lib/bulk_loader/attribute.rb |
bulk_loader-0.3.0 | lib/bulk_loader/attribute.rb |