Module: Train::Options::InstanceOptions

Defined in:
lib/train/options.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#optionsHash (readonly)

Returns options, which created this Transport.

Returns:

  • (Hash)

    options, which created this Transport



48
49
50
# File 'lib/train/options.rb', line 48

def options
  @options
end

Instance Method Details

#default_optionsObject



50
51
52
# File 'lib/train/options.rb', line 50

def default_options
  self.class.default_options
end

#merge_options(base, opts) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/train/options.rb', line 54

def merge_options(base, opts)
  res = base.merge(opts || {})
  default_options.each do |field, hm|
    next unless res[field].nil? && hm.key?(:default)

    default = hm[:default]
    if default.is_a? Proc
      res[field] = default.call(res)
    elsif hm.key?(:coerce)
      field_value = hm[:coerce].call(res)
      res[field] = field_value.nil? ? default : field_value
    else
      res[field] = default
    end
  end
  res
end

#validate_options(opts) ⇒ Object



72
73
74
75
76
77
78
79
80
# File 'lib/train/options.rb', line 72

def validate_options(opts)
  default_options.each do |field, hm|
    if opts[field].nil? && hm[:required]
      raise Train::ClientError,
        "You must provide a value for #{field.to_s.inspect}."
    end
  end
  opts
end