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



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

def app_dir
  config[:working_dir]
end

#backlog(queue_size) ⇒ Object



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

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
32
# 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,
    listen: []
  }
  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



86
87
88
# File 'lib/uc/config.rb', line 86

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

#env_hashObject



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

def env_hash
  @env_hash ||= {}
end

#env_yml(path, safe: false) ⇒ Object



90
91
92
93
# File 'lib/uc/config.rb', line 90

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

#event_queue(event_queue) ⇒ Object



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

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

#event_queue_nameObject



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

def event_queue_name
  config[:event_queue]
end

#instances(num_instances) ⇒ Object



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

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

#listen(*ports) ⇒ Object



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

def listen(*ports)
  config[:listen] = ports
end

#load_envObject



95
96
97
98
99
100
101
102
103
# File 'lib/uc/config.rb', line 95

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



106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/uc/config.rb', line 106

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



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

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

#read_from_fileObject



125
126
127
128
129
130
# File 'lib/uc/config.rb', line 125

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



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

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

#skip_clean_env(value) ⇒ Object



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

def skip_clean_env(value)
  config[:skip_clean_env] = value
end

#timeout(secs) ⇒ Object



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

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

#to_hObject



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

def to_h
  config
end

#working_dir(working_dir) ⇒ Object



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

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