Class: Uc::Config

Inherits:
Object
  • Object
show all
Includes:
Logger
Defined in:
lib/uc/config.rb

Instance Method Summary collapse

Methods included from Logger

#event_stream, event_stream, logger, #logger, stderr, #stderr

Constructor Details

#initialize(app_dir, config_file = nil) ⇒ Config

Returns a new instance of Config.



9
10
11
12
# File 'lib/uc/config.rb', line 9

def initialize(app_dir, config_file = nil)
  @config_file = config_file
  @app_dir = app_dir
end

Instance Method Details

#app_dirObject



69
70
71
# File 'lib/uc/config.rb', line 69

def app_dir
  config[:working_dir]
end

#backlog(queue_size) ⇒ Object



49
50
51
# File 'lib/uc/config.rb', line 49

def backlog(queue_size)
  config[:queue_size] = queue_size
end

#configObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/uc/config.rb', line 18

def config
  return @config if @config
  @config = {
    instances: 2,
    queue_size: 1024,
    timeout: 30,
    prestart_url: "/",
    working_dir: @app_dir,
    event_queue: "unicorn_#{Process.uid}",
    ready_wait: 5
  }
  read_from_file
  return @config
end

#config_fileObject



14
15
16
# File 'lib/uc/config.rb', line 14

def config_file
  @config_file ||= "#{app_dir}/config/uc.rb"
end

#env(key, value) ⇒ Object



77
78
79
# File 'lib/uc/config.rb', line 77

def env(key, value)
  env_hash[key] = value
end

#env_hashObject



73
74
75
# File 'lib/uc/config.rb', line 73

def env_hash
  @env_hash ||= {}
end

#env_yml(path, safe: false) ⇒ Object



81
82
83
84
# File 'lib/uc/config.rb', line 81

def env_yml(path, safe: false)
  @skip_autoload = true
  load_env_yml path, safe: safe
end

#event_queue(event_queue) ⇒ Object



65
66
67
# File 'lib/uc/config.rb', line 65

def event_queue(event_queue)
  config[:event_queue] = event_queue
end

#event_queue_nameObject



41
42
43
# File 'lib/uc/config.rb', line 41

def event_queue_name
  config[:event_queue]
end

#instances(num_instances) ⇒ Object



45
46
47
# File 'lib/uc/config.rb', line 45

def instances(num_instances)
  config[:instances] = num_instances
end

#load_envObject



86
87
88
89
90
91
92
93
94
# File 'lib/uc/config.rb', line 86

def load_env
  config
  if not @skip_autoload
    load_env_yml "#{app_dir}/config/env.yml", safe: true, override: false
  end
  env_hash.each do |k,v|
    ENV[k] = v.to_s
  end
end

#load_env_yml(path, safe: false, override: true) ⇒ Object



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/uc/config.rb', line 97

def load_env_yml(path, safe: false, override: true)
  if not File.readable? path
    logger.debug "skipped loading env from #{path}"
  end
  require 'yaml'
  h = YAML.load_file(path)
  env_hash.merge!(h) do |key, v1, v2|
    override ? v2 : v1
  end
  logger.debug "loaded env from #{path}"
rescue => e
  error_message = "failed to load env from #{path}: #{e.message}"
  if not safe
    raise ::Uc::Error, error_message
  else
    logger.debug error_message
  end
end

#prestart_url(url) ⇒ Object



53
54
55
# File 'lib/uc/config.rb', line 53

def prestart_url(url)
  config[:prestart_url] = url
end

#read_from_fileObject



116
117
118
119
120
121
# File 'lib/uc/config.rb', line 116

def read_from_file
  return if not File.readable? config_file
  instance_eval(File.read(config_file))
rescue NoMethodError => e
  logger.warn "invalid option used in config: #{e.name}"
end

#ready_wait(wait_timeout) ⇒ Object



37
38
39
# File 'lib/uc/config.rb', line 37

def ready_wait(wait_timeout)
  config[:ready_wait] = wait_timeout.to_i
end

#timeout(secs) ⇒ Object



57
58
59
# File 'lib/uc/config.rb', line 57

def timeout(secs)
  config[:timeout] = secs
end

#to_hObject



33
34
35
# File 'lib/uc/config.rb', line 33

def to_h
  config
end

#working_dir(working_dir) ⇒ Object



61
62
63
# File 'lib/uc/config.rb', line 61

def working_dir(working_dir)
  config[:working_dir] = working_dir
end