konfa 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,46 @@
1
+ require 'yaml'
2
+
3
+ module Konfa
4
+ module Initializer
5
+ def self.included(base)
6
+ base.extend ClassMethods
7
+ end
8
+
9
+ module ClassMethods
10
+ def init_with_yaml(path)
11
+ # FIXME: It would be a lot cleaner if the YAML library would raise an
12
+ # exception if it fails to read the file. We'll handle it like this for now
13
+ # load_file just returns "false" if it fails
14
+ yaml_data = YAML.load_file(path)
15
+
16
+ unless yaml_data.nil?
17
+ raise Konfa::InitializationError.new("Bad YAML format, key/value pairs expected") unless yaml_data.kind_of?(Hash)
18
+
19
+ yaml_data.each do |variable, value|
20
+ self.store(variable, value)
21
+ end
22
+ end
23
+
24
+ dump
25
+ end
26
+
27
+ def init_with_env
28
+ conf_prefix = self.env_variable_prefix.upcase
29
+
30
+ ENV.keys.reject { |key|
31
+ key !~ /^#{conf_prefix}/ # Ignore everything that doesn't match the prefix
32
+ }.each { |key|
33
+ variable = key[conf_prefix.size..-1].downcase
34
+
35
+ self.store(variable, ENV[key])
36
+ }
37
+
38
+ dump
39
+ end
40
+ end
41
+
42
+ end
43
+
44
+ class InitializationError < StandardError
45
+ end
46
+ end
@@ -0,0 +1,27 @@
1
+ module Konfa
2
+ module RSpec
3
+ shared_context 'with konfa' do |klass|
4
+ before {
5
+ @konfa_klass = klass
6
+ @konfa_stubbed_klasses = []
7
+ }
8
+
9
+ def let_config(variable, value, use_klass=@konfa_klass)
10
+ raise Konfa::UnsupportedVariableError.new(variable) unless use_klass.allowed_variables.has_key?(variable)
11
+
12
+ unless @konfa_stubbed_klasses.include?(use_klass)
13
+ allow(use_klass).to receive(:get).and_call_original
14
+ @konfa_stubbed_klasses << use_klass
15
+ end
16
+
17
+ allow(use_klass).to receive(:get).with(variable).and_return(value)
18
+ end
19
+
20
+ def with_config(variables, use_klass=@konfa_klass)
21
+ variables.each_pair do |var, val|
22
+ let_config(var, val, use_klass)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: konfa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-11-06 00:00:00.000000000 Z
13
+ date: 2014-01-12 00:00:00.000000000 Z
14
14
  dependencies: []
15
15
  description: Helps you avoid common pitfalls when dealing with app config
16
16
  email: code@avidiy.se
@@ -19,6 +19,8 @@ extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
21
  - lib/konfa.rb
22
+ - lib/konfa/initializer.rb
23
+ - lib/konfa/rspec.rb
22
24
  homepage: http://github.com/avidity/konfa
23
25
  licenses:
24
26
  - MIT