Class: Optimizely::OptimizelyFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/optimizely/optimizely_factory.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Attribute Details

#max_event_batch_sizeObject (readonly)

Returns the value of attribute max_event_batch_size.



24
25
26
# File 'lib/optimizely/optimizely_factory.rb', line 24

def max_event_batch_size
  @max_event_batch_size
end

#max_event_flush_intervalObject (readonly)

Returns the value of attribute max_event_flush_interval.



24
25
26
# File 'lib/optimizely/optimizely_factory.rb', line 24

def max_event_flush_interval
  @max_event_flush_interval
end

Class Method Details

.custom_instance(sdk_key, datafile = nil, event_dispatcher = nil, logger = nil, error_handler = nil, skip_json_validation = false, user_profile_service = nil, config_manager = nil, notification_center = nil) ⇒ Object

Returns a new optimizely instance.

if @max_event_batch_size and @max_event_flush_interval are nil then default batchsize and flush_interval will be used to setup batchEventProcessor.

Parameters:

  • fallback

    datafile - Optional JSON string datafile.

  • event_dispatcher (defaults to: nil)
    • Optional EventDispatcherInterface Provides a dispatch_event method which if given a URL and params sends a request to it.

  • logger (defaults to: nil)
    • Optional LoggerInterface Provides a log method to log messages. By default nothing would be logged.

  • error_handler (defaults to: nil)
    • Optional ErrorHandlerInterface which provides a handle_error method to handle exceptions.

    By default all exceptions will be suppressed.

  • skip_json_validation (defaults to: false)
    • Optional Boolean param to skip JSON schema validation of the provided datafile.

  • user_profile_service (defaults to: nil)
    • Optional UserProfileServiceInterface Provides methods to store and retreive user profiles.

  • config_manager (defaults to: nil)
    • Optional ConfigManagerInterface Responds to ‘config’ method.

  • notification_center (defaults to: nil)
    • Optional Instance of NotificationCenter.



100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/optimizely/optimizely_factory.rb', line 100

def self.custom_instance(
  sdk_key,
  datafile = nil,
  event_dispatcher = nil,
  logger = nil,
  error_handler = nil,
  skip_json_validation = false,
   = nil,
  config_manager = nil,
  notification_center = nil
)
  event_processor = BatchEventProcessor.new(
    event_dispatcher: event_dispatcher || EventDispatcher.new,
    batch_size: @max_event_batch_size,
    flush_interval: @max_event_flush_interval,
    notification_center: notification_center
  )

  Optimizely::Project.new(
    datafile,
    event_dispatcher,
    logger,
    error_handler,
    skip_json_validation,
    ,
    sdk_key,
    config_manager,
    notification_center,
    event_processor
  )
end

.default_instance(sdk_key, datafile = nil) ⇒ Object

Returns a new optimizely instance.

Parameters:

  • fallback

    datafile - Optional JSON string datafile.



74
75
76
# File 'lib/optimizely/optimizely_factory.rb', line 74

def self.default_instance(sdk_key, datafile = nil)
  Optimizely::Project.new(datafile, nil, nil, nil, nil, nil, sdk_key)
end

.default_instance_with_config_manager(config_manager) ⇒ Object

Returns a new optimizely instance.

Parameters:

  • config_manager
    • Required ConfigManagerInterface Responds to ‘config’ method.



81
82
83
# File 'lib/optimizely/optimizely_factory.rb', line 81

def self.default_instance_with_config_manager(config_manager)
  Optimizely::Project.new(nil, nil, nil, nil, nil, nil, nil, config_manager)
end

.max_event_batch_size(batch_size, logger) ⇒ Object

Convenience method for setting the maximum number of events contained within a batch.

Parameters:

  • batch_size

    Integer - Sets size of EventQueue.

  • logger
    • Optional LoggerInterface Provides a log method to log messages.



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/optimizely/optimizely_factory.rb', line 29

def self.max_event_batch_size(batch_size, logger)
  unless batch_size.is_a? Integer
    logger.log(
      Logger::ERROR,
      "Batch size is invalid, setting to default batch size #{BatchEventProcessor::DEFAULT_BATCH_SIZE}."
    )
    return
  end

  unless batch_size.positive?
    logger.log(
      Logger::ERROR,
      "Batch size is negative, setting to default batch size #{BatchEventProcessor::DEFAULT_BATCH_SIZE}."
    )
    return
  end
  @max_event_batch_size = batch_size
end

.max_event_flush_interval(flush_interval, logger) ⇒ Object

Convenience method for setting the maximum time interval in milliseconds between event dispatches.

Parameters:

  • flush_interval

    Numeric - Time interval between event dispatches.

  • logger
    • Optional LoggerInterface Provides a log method to log messages.



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/optimizely/optimizely_factory.rb', line 51

def self.max_event_flush_interval(flush_interval, logger)
  unless flush_interval.is_a? Numeric
    logger.log(
      Logger::ERROR,
      "Flush interval is invalid, setting to default flush interval #{BatchEventProcessor::DEFAULT_BATCH_INTERVAL}."
    )
    return
  end

  unless flush_interval.positive?
    logger.log(
      Logger::ERROR,
      "Flush interval is negative, setting to default flush interval #{BatchEventProcessor::DEFAULT_BATCH_INTERVAL}."
    )
    return
  end
  @max_event_flush_interval = flush_interval
end