class Railjet::Context

Public Class Methods

new(**kwargs) click to toggle source
# File lib/railjet/context.rb, line 3
def initialize(**kwargs)
  define_accessors(kwargs)
end

Public Instance Methods

method_missing(name, *args, &block) click to toggle source

New values can be assigned to context on-the-fly, but it's not possible to change anything.

Calls superclass method
# File lib/railjet/context.rb, line 9
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 Instance Methods

define_accessor(name, value) click to toggle source
# File lib/railjet/context.rb, line 27
def define_accessor(name, value)
  instance_variable_set("@#{name}", value)
  define_singleton_method(name) { instance_variable_get(:"@#{name}") }
end
define_accessors(kwargs) click to toggle source
# File lib/railjet/context.rb, line 21
def define_accessors(kwargs)
  kwargs.each do |name, val|
    define_accessor(name, val)
  end
end