Sha256: f49026644d03c26a9eaf1adca4da0f6d63e38e3392ff752555cceb65f6c9052d

Contents?: true

Size: 835 Bytes

Versions: 12

Compression:

Stored size: 835 Bytes

Contents

require 'active_support/core_ext/string'

class Kookaburra
  # @private
  module DependencyAccessor
    # Creates a private attr_reader on the class that will raise an exception if
    # the attribute has a nil value when it is called. Useful for attributes
    # that can optionally be set in an object's constructor but it is not an
    # error for them to be missing unless something actually wants to use them.
    def dependency_accessor(*names)
      names.each { |name| define_dependency_accessor(name) }
    end

    private

    def define_dependency_accessor(name)
      define_method(name) do
        instance_variable_get("@#{name}") or raise "No %s object was set on %s initialization." \
          % [name, [self.class.name, 'an Anonymous Class!!!'].reject(&:blank?).first]
      end
      private name
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
kookaburra-0.21.1 lib/kookaburra/dependency_accessor.rb
kookaburra-0.21.0 lib/kookaburra/dependency_accessor.rb
kookaburra-0.20.0 lib/kookaburra/dependency_accessor.rb
kookaburra-0.18.3 lib/kookaburra/dependency_accessor.rb
kookaburra-0.18.2 lib/kookaburra/dependency_accessor.rb
kookaburra-0.18.1 lib/kookaburra/dependency_accessor.rb
kookaburra-0.18.0 lib/kookaburra/dependency_accessor.rb
kookaburra-0.17.1 lib/kookaburra/dependency_accessor.rb
kookaburra-0.17.0 lib/kookaburra/dependency_accessor.rb
kookaburra-0.16.1 lib/kookaburra/dependency_accessor.rb
kookaburra-0.16.0 lib/kookaburra/dependency_accessor.rb
kookaburra-0.15.1 lib/kookaburra/dependency_accessor.rb