Class: Liquid::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/liquid/server.rb

Instance Method Summary collapse

Constructor Details

#initializeServer

Returns a new instance of Server.



6
7
8
9
10
11
12
13
# File 'lib/liquid/server.rb', line 6

def initialize
  $log.info("#{self.class.name.downcase} #{RUBY_DESCRIPTION}")
  $log.info("#{self.class.name.downcase}", env: Env.mode)
  initialize_raven
  initialize_tracker
  initialize_metrics
  initialize_health_checks
end

Instance Method Details

#initialize_health_checksObject



47
48
49
50
51
52
# File 'lib/liquid/server.rb', line 47

def initialize_health_checks
  Thread.new do
    Thread.name = "Health Check"
    HealthCheck.poll
  end
end

#initialize_metricsObject



41
42
43
44
45
# File 'lib/liquid/server.rb', line 41

def initialize_metrics
  ::Metrics.start
  ::Metrics::TrackerReporter.new($tracker.with_topic('metrics'))
  Signal.register_shutdown_handler { ::Metrics.stop }
end

#initialize_ravenObject



15
16
17
18
19
20
21
22
23
24
25
# File 'lib/liquid/server.rb', line 15

def initialize_raven
  return unless $conf.raven
  require 'raven'
  Raven.configure do |config|
    config.dsn = $conf.raven.dsn
    config.logger = $log
  end
  $log.add_exception_handler do |exc, message, attribs|
    Raven.capture_exception(exc)
  end
end

#initialize_trackerObject



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/liquid/server.rb', line 27

def initialize_tracker
  if $conf.tracker.kafka.enabled
    # http://kafka.apache.org/documentation.html#producerconfigs
    properties = java.util.Properties.new
    properties['metadata.broker.list'] = $conf.tracker.kafka.brokers.join(',')
    properties['producer.type'] = 'async'
    properties['serializer.class'] = 'kafka.serializer.StringEncoder'
    $tracker = ::Tracker::KafkaTracker.new(properties, $conf.tracker.dimensions)
  else
    $tracker = ::Tracker::LoggerTracker.new($conf.tracker.dimensions)
  end
  Signal.register_shutdown_handler { $tracker.shutdown }
end

#initialize_zmachineObject



54
55
56
57
58
59
60
# File 'lib/liquid/server.rb', line 54

def initialize_zmachine
  require 'zmachine'
  ZMachine.logger = $log
  ZMachine.debug = true if $conf.zmachine.debug
  ZMachine.heartbeat_interval = 0.1
  Signal.register_shutdown_handler { ZMachine.stop }
end

#runObject



62
63
64
65
# File 'lib/liquid/server.rb', line 62

def run
  # by default wait for all workers
  Thread.join
end