constellation 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/README.md +43 -1
  2. data/lib/constellation.rb +6 -0
  3. metadata +9 -9
data/README.md CHANGED
@@ -4,7 +4,7 @@ Constellation is a powerful configuration system. It's great for
4
4
  API client libraries and applications and anywhere else you need to
5
5
  let your users set some configuration parameters.
6
6
 
7
- ## Usage
7
+ ## Putting Settings In
8
8
 
9
9
  ### Ruby Parameters
10
10
 
@@ -112,3 +112,45 @@ class MyConfiguration
112
112
  end
113
113
  end
114
114
  ```
115
+
116
+ ## Getting Settings Out
117
+
118
+ Given a `Constellation` configuration object
119
+
120
+ ```ruby
121
+ c = MyConfiguration.new(:foo => 'bar')
122
+ ```
123
+
124
+ you can get the settings out in a few ways.
125
+
126
+ Keys are available as methods:
127
+
128
+ ```ruby
129
+ c.foo # => "bar"
130
+ ```
131
+
132
+ Keys are converted to `String`s and available via `[]`:
133
+
134
+ ```ruby
135
+ c['foo'] # => "bar"
136
+ ```
137
+
138
+ `to_hash` will return all of the settings:
139
+
140
+ ```ruby
141
+ c.to_hash # => { "foo" => "bar" }
142
+ ```
143
+
144
+ The enumerable methods are available:
145
+
146
+ ```ruby
147
+ c.map { |k,v| k + ':' + v } # => [ "foo:bar" ]
148
+ ```
149
+
150
+ If you have loaded [`activesupport`](http://rubygems.org/gems/activesupport),
151
+ the configuration will be available with
152
+ [indifferent access](http://guides.rubyonrails.org/active_support_core_extensions.html#indifferent-access):
153
+
154
+ ```ruby
155
+ c[:foo] # => "bar"
156
+ ```
@@ -22,6 +22,7 @@ module Constellation
22
22
 
23
23
  def initialize(data = nil)
24
24
  @data = {}
25
+ indifferentize!
25
26
  reverse_merge(data || {})
26
27
  fall_back_on_env
27
28
  fall_back_on_file(Dir.pwd)
@@ -57,6 +58,11 @@ module Constellation
57
58
 
58
59
  attr_reader :data
59
60
 
61
+ def indifferentize!
62
+ return unless data.respond_to?(:with_indifferent_access)
63
+ @data = data.with_indifferent_access
64
+ end
65
+
60
66
  def fall_back_on_env
61
67
  env_values = self.class.env_params.inject({}) do |sum, (prop, env_prop)|
62
68
  sum[prop] = ENV[env_prop] if ENV.has_key?(env_prop)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: constellation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-03-10 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: multi_json
16
- requirement: &70157990197000 !ruby/object:Gem::Requirement
16
+ requirement: &70178361315940 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70157990197000
24
+ version_requirements: *70178361315940
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &70157990196420 !ruby/object:Gem::Requirement
27
+ requirement: &70178361315460 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70157990196420
35
+ version_requirements: *70178361315460
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: fakefs
38
- requirement: &70157990195860 !ruby/object:Gem::Requirement
38
+ requirement: &70178361314880 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70157990195860
46
+ version_requirements: *70178361314880
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: mocha
49
- requirement: &70157990195320 !ruby/object:Gem::Requirement
49
+ requirement: &70178361314260 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70157990195320
57
+ version_requirements: *70178361314260
58
58
  description: Load configuration settings from ENV, dotfiles, and gems
59
59
  email:
60
60
  - james.a.rosen@gmail.com