env-config 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c1896a65fd942910ad642261a1fd8c527e6a2e24
4
- data.tar.gz: 84624eb3c1508cd45a14fcb15d320d271ef16c7d
3
+ metadata.gz: 1a790b308075dbab78e02d9a57d4882a7d092e8c
4
+ data.tar.gz: 058a99ca23ba4107d5c078e6802c64afc3534312
5
5
  SHA512:
6
- metadata.gz: 6809a76d3f24d34ded0ba3ab0668c2128dcaa9c0be61a331ae46501dbe559da4759b7a6aaa6cc1f28720fdb3bb8634e575f5e29de26b72459505cb319c412eb1
7
- data.tar.gz: 38daa24b84ce05fb52603da0ae546d9eb4a2717114573a0ec50d989b227240096fd2544f1680450221eb5a6a17846826c15efcb892a63ebb88994e0602550e56
6
+ metadata.gz: d5ceacc2c99f120fc3dca0fda1b11c5484c7a435dfb1ab3d4aad838e4e86cb05fdcb18583352c235c8db49455b4b88a12d16410c2dda9fc2aff640b0bad54d0a
7
+ data.tar.gz: d6c7525ab5be1de756b93dcf4889bf76a2befbb2d4cfbfbe5db3d0a4156c4a65ec0003b302d52dcbe06c195bac7670c3989014db9fc540d8369ac0e8edcd3f8c
data/README.md CHANGED
@@ -1,5 +1,43 @@
1
- Configuration
2
- =============
1
+ # EnvConfig
3
2
 
4
3
  Basic ruby environment-dependent configuration
5
4
 
5
+ ## usage example:
6
+
7
+ ``` ruby
8
+ # environment.rb
9
+ EnvConfig.configure(:default) do |config|
10
+ config[:verbose] = true
11
+ end
12
+
13
+ # test.rb
14
+ EnvConfig.configure(:test) do |config|
15
+ config[:verbose] = false
16
+ end
17
+
18
+ # development.rb
19
+ EnvConfig.configure(:development) do |config|
20
+ end
21
+
22
+
23
+ config = EnvConfig.new(:test)
24
+ config[:verbose] # => false
25
+
26
+ config = EnvConfig.new(:development)
27
+ config[:verbose] # => true
28
+ ```
29
+
30
+ ## Exceptions
31
+
32
+ ``` ruby
33
+ config[:unknown_key_12345] # => EnvConfig::ArgumentError
34
+
35
+ config = EnvConfig.new(:unknown_env_123) # => EnvConfig::UnknownEnvironmentError
36
+
37
+ config = EnvConfig.new(:default) # => EnvConfig::AbstractError
38
+
39
+ EnvConfig.configure(:test) do ...
40
+ EnvConfig.configure(:default) do ... # => EnvConfig::LoadOrderError
41
+
42
+ config[:verbose] = false # => EnvConfig::ImmutableError
43
+ ```
@@ -21,12 +21,27 @@
21
21
  # config = EnvConfig.new(:development)
22
22
  # config[:verbose] # => true
23
23
  #
24
+ #
25
+ # Exceptions:
26
+ #
27
+ # config[:unknown_key_12345] # => EnvConfig::ArgumentError
28
+ #
29
+ # config = EnvConfig.new(:unknown_env_123) # => EnvConfig::UnknownEnvironmentError
30
+ #
31
+ # config = EnvConfig.new(:default) # => EnvConfig::AbstractError
32
+ #
33
+ # EnvConfig.configure(:test) do ...
34
+ # EnvConfig.configure(:default) do ... # => EnvConfig::LoadOrderError
35
+ #
36
+ # config[:verbose] = false # => EnvConfig::ImmutableError
37
+ #
24
38
  class EnvConfig
25
39
 
26
40
  class UnknownEnvironmentError < RuntimeError ; end
27
41
  class AbstractError < RuntimeError ; end
28
42
  class LoadOrderError < RuntimeError ; end
29
43
  class ImmutableError < RuntimeError ; end
44
+ class ArgumentError < ::ArgumentError ; end
30
45
 
31
46
  @@configurations = {}
32
47
 
@@ -45,6 +60,10 @@ class EnvConfig
45
60
  end
46
61
 
47
62
  def [](key)
63
+ # be strict
64
+ if !get_config.has_key?(key)
65
+ raise ArgumentError.new("key '#{key}' not defined in configuration or default")
66
+ end
48
67
  get_config[key]
49
68
  end
50
69
 
@@ -1,3 +1,3 @@
1
1
  class EnvConfig
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -40,6 +40,13 @@ class EnvConfigTest < MiniTest::Test
40
40
  assert_equal 'default default_test_setting', config[:default_test_setting]
41
41
  end
42
42
 
43
+ def test_raises_if_config_key_not_set_in_at_least_default
44
+ config = EnvConfig.new('test')
45
+ assert_raises EnvConfig::ArgumentError do
46
+ config[:unknown_test_setting_12345]
47
+ end
48
+ end
49
+
43
50
  def test_environment_specific_setting_overrides_default
44
51
  EnvConfig.configure(:test2) do |config|
45
52
  config[:default_test_setting] = 'overwritten default_test_setting'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: env-config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Markus Seeger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-01 00:00:00.000000000 Z
11
+ date: 2014-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake