Class: GxApi::ExperimentIdentifier

Inherits:
BasicObject
Defined in:
lib/gxapi/experiment_identifier.rb

Overview

Wrapper class to handle experiment identifier types

Examples:

identifier = ExperimentIdentifer.new("name")
identifier.value #=> "name"
identifier.matches_experiment?(Experiment(name: 'name')) #=> true

identifier = ExperimentIdentifer.new(id: "id")
identifier.value #=> "id"
identifier.matches_experiment?(Experiment(id: 'id')) #=> true

Instance Method Summary collapse

Constructor Details

#initialize(val) ⇒ ExperimentIdentifier

Constructor

Parameters:

  • val (String, Hash)

    Either a String name or a Hash with ID



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/gxapi/experiment_identifier.rb', line 23

def initialize(val)
  # handle a string
  if val.is_a?(::String)
    @proxy = NameExperimentIdentifier.new(val)
  # handle an ID
  elsif val.try(:[], :id)
    @proxy = IdExperimentIdentifier.new(val[:id])
  # error if we don't have anything valid
  else
    raise ArgumentError.new("#{val} is not a valid identifier type")
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m, *args, &block) ⇒ Mixed (protected)

Implementation of method_missing sends to our proxy

Parameters:

  • m (Symbol)

    Method name

  • *args (Array<Mixed>)

    Args passed

  • &block (Proc, nil)

    Block passed

Returns:

  • (Mixed)

    Whatever @proxy does



47
48
49
# File 'lib/gxapi/experiment_identifier.rb', line 47

def method_missing(m, *args, &block)
  @proxy.send(m, *args, &block)
end