Class: RubyPitaya::Main

Inherits:
Object
  • Object
show all
Defined in:
lib/rubypitaya/core/main.rb

Instance Method Summary collapse

Constructor Details

#initializeMain

Returns a new instance of Main.



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/rubypitaya/core/main.rb', line 30

def initialize
  @setup = Setup.new
  @environment_name = @setup.fetch('rubypitaya.server.environment', 'development')
  @is_cheats_enabled = @setup.fetch('rubypitaya.server.cheats', false)
  @is_development_environment = @environment_name == 'development'
  @setup.auto_reload if @is_development_environment

  @log = Logger.new('/proc/self/fd/1')
  @log.level = Logger::INFO
  @log.formatter = proc do |severity, datetime, progname, msg|
    "#{msg}\n"
  end

  @application_files_importer = ApplicationFilesImporter.new
  @application_files_importer.import(@is_cheats_enabled)
  @application_files_importer.auto_reload if @is_development_environment

  @server_name = @setup['rubypitaya.server.name']
  @service_uuid = SecureRandom.uuid
  @desktop_name = Socket.gethostname

  @etcd_prefix = @setup['rubypitaya.etcd.prefix']
  @etcd_address = @setup['rubypitaya.etcd.url']
  @etcd_lease_seconds = @setup['rubypitaya.etcd.leaseSeconds'].to_i
  @allow_reconnect = false
  @etcd_connector = EtcdConnector.new(@service_uuid, @desktop_name,
                                      @server_name, @etcd_prefix,
                                      @etcd_address, @allow_reconnect,
                                      @etcd_lease_seconds)
  @etcd_connector.connect

  @nats_address = @setup['rubypitaya.nats.url']
  @nats_connector = NatsConnector.new(@nats_address, @service_uuid,
                                      @server_name)

  @database_connector = DatabaseConnector.new(@setup, @log)
  @database_connector.connect

  @session = Session.new
  @postman = Postman.new(@nats_connector)
  @config = Config.new
  @config.auto_reload if @is_development_environment

  @services = ServiceHolder.new

  @objects = InstanceHolder.new

  @initializer_content = InitializerContent.new(@log,
                                                @services,
                                                @setup,
                                                @config)
  @initializer_broadcast = InitializerBroadcast.new
  @initializer_broadcast.run(@initializer_content)

  @handler_router = HandlerRouter.new(@is_cheats_enabled)

  connect_services

  run_http
  run_server
end