foundry 0.1.0 → 0.2.1
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.
- checksums.yaml +4 -4
- data/README.md +32 -3
- data/TODO +0 -1
- data/foundry.gemspec +3 -11
- data/lib/foundry/configurator.rb +5 -5
- data/lib/foundry/hash_struct.rb +10 -0
- data/lib/foundry/version.rb +1 -1
- data/lib/foundry.rb +1 -0
- data/spec/configurator_spec.rb +2 -2
- metadata +4 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb2577df8898406d373fe649df69d6fcb30f9688
|
4
|
+
data.tar.gz: 1bf538e9a2cefd8a68a474ac36c73a18afd3b10c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b7c6975739a40247f16b952dcc2623c1fd35fbfdb7a6e10adc3892cb4fec25cc6715593314d2e21f4054493a1f5c517102b12ea15a7beceac5d5bdee05a5b8a
|
7
|
+
data.tar.gz: a666555baaae3f83aba7a2aa881bb94ab11fbf8a7c52d45fff7b25d76f81a1991ea21ab333ccef254e190b5bf0cd3a563f9abbcefdc903b40fa2a8cfcde9da93
|
data/README.md
CHANGED
@@ -5,6 +5,18 @@
|
|
5
5
|
|
6
6
|
An application configuration gem that aims to keep it simple
|
7
7
|
|
8
|
+
Let's face it, there are a number of problems when application/environment
|
9
|
+
configuration logic is too tightly coupled with the configuration-data itself.
|
10
|
+
This gem aims to keep it simple and fully decouple the two concerns.
|
11
|
+
|
12
|
+
Features:
|
13
|
+
|
14
|
+
* Can load YAML from a local-file
|
15
|
+
* Can load YAML from a HTTP/HTTPS endpoint
|
16
|
+
* Supports Basic Authentication for HTTP{,S} endpoints
|
17
|
+
* Supports ERB interpolation
|
18
|
+
* Returns an easy to navigate object-graph
|
19
|
+
|
8
20
|
## Installation
|
9
21
|
|
10
22
|
Add this line to your application's Gemfile:
|
@@ -24,25 +36,42 @@ Or install it yourself as:
|
|
24
36
|
Loading from a local-file:
|
25
37
|
|
26
38
|
```ruby
|
27
|
-
Foundry::Configurator.configure(:file_name => 'path-to-local-file')
|
39
|
+
config = Foundry::Configurator.configure(:file_name => 'path-to-local-file')
|
28
40
|
```
|
29
41
|
|
30
42
|
Loading from a HTTP/HTTPS endpoint:
|
31
43
|
|
32
44
|
```ruby
|
33
|
-
Foundry::Configurator.configure(:uri => 'http-or-https-endpoint')
|
45
|
+
config = Foundry::Configurator.configure(:uri => 'http-or-https-endpoint')
|
34
46
|
```
|
35
47
|
|
36
48
|
Loading from a HTTP/HTTPS endpoint using "Basic Authentication":
|
37
49
|
|
38
50
|
```ruby
|
39
|
-
Foundry::Configurator.configure(
|
51
|
+
config = Foundry::Configurator.configure(
|
40
52
|
:uri => 'http-or-https-endpoint',
|
41
53
|
:username => 'basic-auth-username',
|
42
54
|
:password => 'basic-auth-password'
|
43
55
|
)
|
44
56
|
```
|
45
57
|
|
58
|
+
Using the "config" object (defined above):
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
# The examples below assume that the following YAML was loaded by a call to
|
62
|
+
# "Foundry::Configurator.configure" and into a variable named "config"
|
63
|
+
#
|
64
|
+
# ---
|
65
|
+
# some_key:
|
66
|
+
# some_nested_key: value
|
67
|
+
|
68
|
+
# Fetch a value using dot-notation
|
69
|
+
value = config.some_key.some_nested_key
|
70
|
+
|
71
|
+
# Fetch a value by key
|
72
|
+
value = config['some_key']['some_nested_key']
|
73
|
+
```
|
74
|
+
|
46
75
|
## Contributing
|
47
76
|
|
48
77
|
1. Fork it ( http://github.com/jzaleski/foundry/fork )
|
data/TODO
CHANGED
data/foundry.gemspec
CHANGED
@@ -8,20 +8,12 @@ Gem::Specification.new do |gem|
|
|
8
8
|
gem.version = Foundry::VERSION
|
9
9
|
gem.authors = ['Jonathan W. Zaleski']
|
10
10
|
gem.email = ['JonathanZaleski@gmail.com']
|
11
|
-
gem.summary =
|
12
|
-
gem.description = <<-
|
11
|
+
gem.summary = 'An application configuration gem that aims to keep it simple'
|
12
|
+
gem.description = <<-DESCRIPTION
|
13
13
|
Let's face it, there are a number of problems when application/environment
|
14
14
|
configuration logic is too tightly coupled with the configuration-data itself.
|
15
15
|
This gem aims to keep it simple and fully decouple the two concerns.
|
16
|
-
|
17
|
-
Features:
|
18
|
-
|
19
|
-
* Can load YAML from a local-file
|
20
|
-
* Can load YAML from a HTTP/HTTPS endpoint
|
21
|
-
* Supports Basic Authentication for HTTP{,S} endpoints
|
22
|
-
* Supports ERB interpolation
|
23
|
-
* Returns an easy to navigate object-graph
|
24
|
-
EOL
|
16
|
+
DESCRIPTION
|
25
17
|
gem.homepage = 'https://github.com/jzaleski/foundry'
|
26
18
|
gem.license = 'MIT'
|
27
19
|
|
data/lib/foundry/configurator.rb
CHANGED
@@ -2,7 +2,7 @@ module Foundry
|
|
2
2
|
class Configurator
|
3
3
|
class << self
|
4
4
|
def configure(opts={})
|
5
|
-
|
5
|
+
structify(
|
6
6
|
load_yaml(
|
7
7
|
evaluate_erb(
|
8
8
|
load_by_filename_or_uri(opts)
|
@@ -31,16 +31,16 @@ module Foundry
|
|
31
31
|
YAML.load(str)
|
32
32
|
end
|
33
33
|
|
34
|
-
def
|
34
|
+
def structify(object)
|
35
35
|
case object
|
36
36
|
when Array
|
37
37
|
object.map do |value|
|
38
|
-
|
38
|
+
structify(value)
|
39
39
|
end
|
40
40
|
when Hash
|
41
|
-
|
41
|
+
Foundry::HashStruct.new.tap do |hash_struct|
|
42
42
|
object.each do |key, value|
|
43
|
-
|
43
|
+
hash_struct[key] = structify(value)
|
44
44
|
end
|
45
45
|
end
|
46
46
|
else
|
data/lib/foundry/version.rb
CHANGED
data/lib/foundry.rb
CHANGED
data/spec/configurator_spec.rb
CHANGED
@@ -42,8 +42,8 @@ describe Foundry::Configurator do
|
|
42
42
|
YAML
|
43
43
|
}
|
44
44
|
expect(subject.configure(:file_name => '')).to eq(
|
45
|
-
|
46
|
-
'root' =>
|
45
|
+
Foundry::HashStruct.new(
|
46
|
+
'root' => Foundry::HashStruct.new(
|
47
47
|
'erb' => 6,
|
48
48
|
'float' => 123.0,
|
49
49
|
'integer' => 42,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foundry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonathan W. Zaleski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -70,14 +70,6 @@ description: |2
|
|
70
70
|
Let's face it, there are a number of problems when application/environment
|
71
71
|
configuration logic is too tightly coupled with the configuration-data itself.
|
72
72
|
This gem aims to keep it simple and fully decouple the two concerns.
|
73
|
-
|
74
|
-
Features:
|
75
|
-
|
76
|
-
* Can load YAML from a local-file
|
77
|
-
* Can load YAML from a HTTP/HTTPS endpoint
|
78
|
-
* Supports Basic Authentication for HTTP{,S} endpoints
|
79
|
-
* Supports ERB interpolation
|
80
|
-
* Returns an easy to navigate object-graph
|
81
73
|
email:
|
82
74
|
- JonathanZaleski@gmail.com
|
83
75
|
executables: []
|
@@ -94,6 +86,7 @@ files:
|
|
94
86
|
- foundry.gemspec
|
95
87
|
- lib/foundry.rb
|
96
88
|
- lib/foundry/configurator.rb
|
89
|
+
- lib/foundry/hash_struct.rb
|
97
90
|
- lib/foundry/loaders/file.rb
|
98
91
|
- lib/foundry/loaders/uri.rb
|
99
92
|
- lib/foundry/version.rb
|
@@ -121,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
121
114
|
version: '0'
|
122
115
|
requirements: []
|
123
116
|
rubyforge_project:
|
124
|
-
rubygems_version: 2.
|
117
|
+
rubygems_version: 2.3.0
|
125
118
|
signing_key:
|
126
119
|
specification_version: 4
|
127
120
|
summary: An application configuration gem that aims to keep it simple
|