Sha256: d2ae5eac2a62f5ce84e0716e6ac5169c381f5dd71e825813494d6986aed3a6d6

Contents?: true

Size: 709 Bytes

Versions: 7

Compression:

Stored size: 709 Bytes

Contents

module Railjet
  class Context
    def initialize(**kwargs)
      define_accessors(kwargs)
    end

    # New values can be assigned to context on-the-fly,
    # but it's not possible to change anything.
    def method_missing(name, *args, &block)
      getter_name = name[0..-2]

      if name =~ /^[a-z]+=$/ && !respond_to?(getter_name)
        define_accessor(getter_name, args.first)
      else
        super
      end
    end

    private

    def define_accessors(kwargs)
      kwargs.each do |name, val|
        define_accessor(name, val)
      end
    end

    def define_accessor(name, value)
      instance_variable_set("@#{name}", value)
      self.class.send(:attr_reader, name)
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
railjet-2.0 lib/railjet/context.rb
railjet-2.0.pre4 lib/railjet/context.rb
railjet-2.0.pre3 lib/railjet/context.rb
railjet-2.0.pre2 lib/railjet/context.rb
railjet-2.0.pre1 lib/railjet/context.rb
railjet-2.0.pre lib/railjet/context.rb
railjet-1.0.1 lib/railjet/context.rb