tarot 0.1.3 → 0.1.4
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/lib/tarot.rb +14 -3
- data/lib/tarot/version.rb +1 -1
- data/spec/data/recursive.yml +1 -0
- data/spec/data/test.yml +3 -0
- data/spec/tarot_spec.rb +16 -1
- metadata +5 -7
data/lib/tarot.rb
CHANGED
@@ -8,10 +8,14 @@ module Tarot
|
|
8
8
|
@config_files = files
|
9
9
|
@config_files = [@config_files] if @config_files.is_a? String
|
10
10
|
@yaml = {}
|
11
|
+
yaml = "---\n" + @config_files.map do |file|
|
12
|
+
File.open(file).read.untaint.gsub(/^---.*$/, '')
|
13
|
+
end.join("\n")
|
14
|
+
@yaml = YAML::load(yaml).stringify_keys!
|
11
15
|
@config_files.each do |file|
|
12
|
-
yaml = YAML::load(
|
13
|
-
recursive_merge
|
14
|
-
end
|
16
|
+
yaml = YAML::load(open(file).read).stringify_keys!
|
17
|
+
recursive_merge(@yaml, yaml)
|
18
|
+
end
|
15
19
|
add_mm @yaml
|
16
20
|
@config_cache = {}
|
17
21
|
@env = env
|
@@ -22,6 +26,13 @@ module Tarot
|
|
22
26
|
@config_cache[env][key] ||= key.split('.').inject(@yaml[env || @env]) {|e, part| e.try(:[], part) } || default
|
23
27
|
end
|
24
28
|
|
29
|
+
def with_environment(env)
|
30
|
+
old_env, self.env = self.env, env
|
31
|
+
yield if block_given?
|
32
|
+
self.env = old_env
|
33
|
+
nil
|
34
|
+
end
|
35
|
+
|
25
36
|
private
|
26
37
|
|
27
38
|
def recursive_merge(left, right)
|
data/lib/tarot/version.rb
CHANGED
data/spec/data/recursive.yml
CHANGED
data/spec/data/test.yml
CHANGED
data/spec/tarot_spec.rb
CHANGED
@@ -37,14 +37,29 @@ describe Tarot do
|
|
37
37
|
it "should fail when method_missing follows a multi-level chain that doesn't exist" do
|
38
38
|
lambda { @tarot.blarg.blaze }.should raise_error(NameError)
|
39
39
|
end
|
40
|
+
|
41
|
+
it "should accept an override environment as a block" do
|
42
|
+
@tarot.with_environment("production") do
|
43
|
+
@tarot.env.should == "production"
|
44
|
+
@tarot.get("fizz").should == "bang"
|
45
|
+
end
|
46
|
+
@tarot.env.should == "development"
|
47
|
+
end
|
40
48
|
end
|
41
49
|
|
42
50
|
context "Given multiple config files" do
|
51
|
+
before :all do
|
52
|
+
@tarot = Tarot::Config.new(["spec/data/test.yml", "spec/data/recursive.yml"], "development")
|
53
|
+
end
|
54
|
+
|
43
55
|
it "should produce a recursively merged hash when given multiple files to load" do
|
44
|
-
@tarot = Tarot::Config.new(["spec/data/test.yml", "spec/data/recursive.yml"], "development")
|
45
56
|
@tarot.get("foo").should == "fizzle"
|
46
57
|
@tarot.get("mah").should == "rizzle"
|
47
58
|
@tarot.get("fizz").should == "buzz"
|
48
59
|
end
|
60
|
+
|
61
|
+
it "should accept YAML inclusions across files" do
|
62
|
+
@tarot.get("included").should == true
|
63
|
+
end
|
49
64
|
end
|
50
65
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tarot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 4
|
10
|
+
version: 0.1.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Chris Heald
|
@@ -15,8 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-07-27 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
21
|
name: activesupport
|
@@ -58,7 +57,6 @@ files:
|
|
58
57
|
- spec/spec_helper.rb
|
59
58
|
- spec/tarot_spec.rb
|
60
59
|
- tarot.gemspec
|
61
|
-
has_rdoc: true
|
62
60
|
homepage: https://github.com/cheald/tarot
|
63
61
|
licenses: []
|
64
62
|
|
@@ -88,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
86
|
requirements: []
|
89
87
|
|
90
88
|
rubyforge_project: tarot
|
91
|
-
rubygems_version: 1.6
|
89
|
+
rubygems_version: 1.8.6
|
92
90
|
signing_key:
|
93
91
|
specification_version: 3
|
94
92
|
summary: Tarot is a small, concise configuration library for Rails apps.
|