conker 0.12.1 → 0.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/conker.gemspec +1 -1
- data/lib/conker.rb +18 -5
- metadata +1 -1
data/conker.gemspec
CHANGED
@@ -2,7 +2,7 @@ Gem::Specification.new do |s|
|
|
2
2
|
s.name = 'conker'
|
3
3
|
s.authors = ['Sam Stokes', 'Conrad Irwin', 'Lee Mallabone', 'Martin Kleppmann']
|
4
4
|
s.email = 'supportive@rapportive.com'
|
5
|
-
s.version = '0.12.
|
5
|
+
s.version = '0.12.2'
|
6
6
|
s.summary = %q{Conker will conquer your config.}
|
7
7
|
s.description = "Configuration library."
|
8
8
|
s.homepage = "https://github.com/rapportive/conker"
|
data/lib/conker.rb
CHANGED
@@ -42,7 +42,7 @@ module Conker
|
|
42
42
|
# Parse a multi-key hash into globals and raise an informative error message on failure.
|
43
43
|
def setup_config!(current_env, *args)
|
44
44
|
declarations = args.extract_options!
|
45
|
-
values = values_hash(args[0])
|
45
|
+
values = values_hash(current_env, args[0])
|
46
46
|
|
47
47
|
setup_constants(current_env, declarations, values)
|
48
48
|
end
|
@@ -58,9 +58,10 @@ module Conker
|
|
58
58
|
def setup_rack_environment!(*args)
|
59
59
|
ENV['RACK_ENV'] ||= 'development'
|
60
60
|
set_constant(:RACK_ENV, ENV['RACK_ENV'])
|
61
|
+
current_env = get_constant(:RACK_ENV)
|
61
62
|
|
62
63
|
declarations = args.extract_options!
|
63
|
-
values = values_hash(args[0])
|
64
|
+
values = values_hash(current_env, args[0])
|
64
65
|
|
65
66
|
if declarations.key?('RACK_ENV') || declarations.key?(:RACK_ENV)
|
66
67
|
raise Error, "No need to declare RACK_ENV; please remove it to avoid confusion!"
|
@@ -69,7 +70,7 @@ module Conker
|
|
69
70
|
raise "RACK_ENV differs between environment (#{env}) and config (#{conf})! Please remove it from your config."
|
70
71
|
end
|
71
72
|
|
72
|
-
setup_constants(
|
73
|
+
setup_constants(current_env, declarations, values)
|
73
74
|
end
|
74
75
|
|
75
76
|
# Declare an environment variable that is required to be defined in the
|
@@ -126,10 +127,18 @@ module Conker
|
|
126
127
|
end
|
127
128
|
|
128
129
|
private
|
129
|
-
def values_hash(values)
|
130
|
+
def values_hash(current_env, values)
|
130
131
|
case values
|
131
132
|
when Hash; values
|
132
|
-
when String
|
133
|
+
when String
|
134
|
+
if File.exist?(values)
|
135
|
+
require 'yaml'
|
136
|
+
YAML.parse_file(values).to_ruby
|
137
|
+
elsif 'production' == current_env.to_s
|
138
|
+
raise Error, "Missing config file #{values}"
|
139
|
+
else
|
140
|
+
{}
|
141
|
+
end
|
133
142
|
else; ENV
|
134
143
|
end
|
135
144
|
end
|
@@ -153,6 +162,10 @@ module Conker
|
|
153
162
|
def set_constant(varname, value)
|
154
163
|
Kernel.const_set(varname, value)
|
155
164
|
end
|
165
|
+
|
166
|
+
def get_constant(varname)
|
167
|
+
Kernel.const_get(varname)
|
168
|
+
end
|
156
169
|
end
|
157
170
|
|
158
171
|
|