confset 1.0.0

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.
Files changed (66) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +44 -0
  3. data/docs/CHANGELOG.md +15 -0
  4. data/docs/LICENSE.md +29 -0
  5. data/lib/confset/configuration.rb +37 -0
  6. data/lib/confset/integrations/heroku.rb +61 -0
  7. data/lib/confset/integrations/rails/railtie.rb +40 -0
  8. data/lib/confset/integrations/sinatra.rb +27 -0
  9. data/lib/confset/options.rb +187 -0
  10. data/lib/confset/rack/reloader.rb +17 -0
  11. data/lib/confset/sources/env_source.rb +74 -0
  12. data/lib/confset/sources/hash_source.rb +18 -0
  13. data/lib/confset/sources/yaml_source.rb +34 -0
  14. data/lib/confset/tasks/heroku.rake +9 -0
  15. data/lib/confset/validation/error.rb +13 -0
  16. data/lib/confset/validation/schema.rb +22 -0
  17. data/lib/confset/validation/validate.rb +26 -0
  18. data/lib/confset/version.rb +5 -0
  19. data/lib/confset.rb +89 -0
  20. data/lib/generators/confset/install_generator.rb +34 -0
  21. data/lib/generators/confset/templates/confset.rb +58 -0
  22. data/lib/generators/confset/templates/settings/development.yml +0 -0
  23. data/lib/generators/confset/templates/settings/production.yml +0 -0
  24. data/lib/generators/confset/templates/settings/test.yml +0 -0
  25. data/lib/generators/confset/templates/settings.local.yml +0 -0
  26. data/lib/generators/confset/templates/settings.yml +0 -0
  27. data/spec/config_env_spec.rb +238 -0
  28. data/spec/config_spec.rb +468 -0
  29. data/spec/configuration_spec.rb +16 -0
  30. data/spec/fixtures/bool_override/config1.yml +2 -0
  31. data/spec/fixtures/bool_override/config2.yml +2 -0
  32. data/spec/fixtures/custom_types/hash.yml +7 -0
  33. data/spec/fixtures/deep_merge/config1.yml +31 -0
  34. data/spec/fixtures/deep_merge/config2.yml +28 -0
  35. data/spec/fixtures/deep_merge2/config1.yml +3 -0
  36. data/spec/fixtures/deep_merge2/config2.yml +2 -0
  37. data/spec/fixtures/deep_merge3/config1.yml +1 -0
  38. data/spec/fixtures/deep_merge3/config2.yml +1 -0
  39. data/spec/fixtures/development.yml +4 -0
  40. data/spec/fixtures/empty1.yml +0 -0
  41. data/spec/fixtures/empty2.yml +0 -0
  42. data/spec/fixtures/knockout_prefix/config1.yml +40 -0
  43. data/spec/fixtures/knockout_prefix/config2.yml +28 -0
  44. data/spec/fixtures/knockout_prefix/config3.yml +14 -0
  45. data/spec/fixtures/malformed.yml +6 -0
  46. data/spec/fixtures/multilevel.yml +10 -0
  47. data/spec/fixtures/overwrite_arrays/config1.yml +17 -0
  48. data/spec/fixtures/overwrite_arrays/config2.yml +12 -0
  49. data/spec/fixtures/overwrite_arrays/config3.yml +10 -0
  50. data/spec/fixtures/reserved_keywords.yml +7 -0
  51. data/spec/fixtures/settings.yml +22 -0
  52. data/spec/fixtures/settings2.yml +1 -0
  53. data/spec/fixtures/unsafe_load.yml +12 -0
  54. data/spec/fixtures/validation/confset.yml +3 -0
  55. data/spec/fixtures/with_erb.yml +4 -0
  56. data/spec/fixtures/with_malformed_erb.yml +1 -0
  57. data/spec/options_spec.rb +255 -0
  58. data/spec/sources/env_source_spec.rb +81 -0
  59. data/spec/sources/hash_source_spec.rb +49 -0
  60. data/spec/sources/yaml_source_spec.rb +145 -0
  61. data/spec/spec_helper.rb +28 -0
  62. data/spec/support/fixture_helper.rb +14 -0
  63. data/spec/support/rails_helper.rb +24 -0
  64. data/spec/support/shared_contexts/rake.rb +8 -0
  65. data/spec/validation_spec.rb +84 -0
  66. metadata +295 -0
@@ -0,0 +1,468 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ describe Confset do
6
+ before :each do
7
+ Confset.reset
8
+ end
9
+
10
+ it "should get setting files" do
11
+ config = Confset.setting_files("root/config", "staging")
12
+ expect(config).to eq([
13
+ "root/config/settings.yml",
14
+ "root/config/settings/staging.yml",
15
+ "root/config/environments/staging.yml",
16
+ "root/config/settings.local.yml",
17
+ "root/config/settings/staging.local.yml",
18
+ "root/config/environments/staging.local.yml"
19
+ ])
20
+ end
21
+
22
+ it "should ignore local config in test environment" do
23
+ config = Confset.setting_files("root/config", "test")
24
+ expect(config).to eq([
25
+ "root/config/settings.yml",
26
+ "root/config/settings/test.yml",
27
+ "root/config/environments/test.yml",
28
+ "root/config/settings/test.local.yml",
29
+ "root/config/environments/test.local.yml"
30
+ ])
31
+ end
32
+
33
+ it "should load a basic config file" do
34
+ config = Confset.load_files("spec/fixtures/settings.yml")
35
+ expect(config.size).to eq(1)
36
+ expect(config.server).to eq("google.com")
37
+ expect(config["1"]).to eq("one")
38
+ expect(config.photo_sizes.avatar).to eq([60, 60])
39
+ expect(config.root["yahoo.com"]).to eq(2)
40
+ expect(config.root["google.com"]).to eq(3)
41
+ end
42
+
43
+ it "should load 2 basic config files" do
44
+ config = Confset.load_files("spec/fixtures/settings.yml", "spec/fixtures/settings2.yml")
45
+ expect(config.size).to eq(1)
46
+ expect(config.server).to eq("google.com")
47
+ expect(config.another).to eq("something")
48
+ end
49
+
50
+ it "should load config files specified as Pathname objects" do
51
+ path = Pathname.new("spec/fixtures").join("settings.yml")
52
+ config = Confset.load_files(path)
53
+ expect(config.server).to eq("google.com")
54
+ end
55
+
56
+ it "should load config files specified as objects responding to :load" do
57
+ source = double "source"
58
+ allow(source).to receive(:load) do
59
+ { "server" => "google.com" }
60
+ end
61
+ config = Confset.load_files(source)
62
+ expect(config.server).to eq("google.com")
63
+ end
64
+
65
+ it "should load config from HashSource" do
66
+ source = Confset::Sources::HashSource.new({ "server" => "google.com" })
67
+ config = Confset.load_files(source)
68
+ expect(config.server).to eq("google.com")
69
+ end
70
+
71
+ it "should load config from files and HashSource" do
72
+ file_source = "spec/fixtures/settings.yml"
73
+ hash_source = Confset::Sources::HashSource.new({ "size" => 12 })
74
+ config = Confset.load_files(file_source, hash_source)
75
+ expect(config.server).to eq("google.com")
76
+ expect(config.size).to eq(12)
77
+ end
78
+
79
+ it "should load empty config for a missing file path" do
80
+ config = Confset.load_files("spec/fixtures/some_file_that_doesnt_exist.yml")
81
+ expect(config).to be_empty
82
+ end
83
+
84
+ it "should load an empty config for multiple missing file paths" do
85
+ files = ["spec/fixtures/doesnt_exist1.yml", "spec/fixtures/doesnt_exist2.yml"]
86
+ config = Confset.load_files(files)
87
+ expect(config).to be_empty
88
+ end
89
+
90
+ it "should load empty config for an empty setting file" do
91
+ config = Confset.load_files("spec/fixtures/empty1.yml")
92
+ expect(config).to be_empty
93
+ end
94
+
95
+ it "should convert to a hash" do
96
+ config = Confset.load_files("spec/fixtures/development.yml").to_hash
97
+ expect(config[:section][:servers]).to be_kind_of(Array)
98
+ expect(config[:section][:servers][0][:name]).to eq("yahoo.com")
99
+ expect(config[:section][:servers][1][:name]).to eq("amazon.com")
100
+ end
101
+
102
+ it "should convert to a hash (We Need To Go Deeper)" do
103
+ config = Confset.load_files("spec/fixtures/development.yml").to_hash
104
+ servers = config[:section][:servers]
105
+ expect(servers).to eq([{ name: "yahoo.com" }, { name: "amazon.com" }])
106
+ end
107
+
108
+ it "should convert to a hash without modifying nested settings" do
109
+ config = Confset.load_files("spec/fixtures/development.yml")
110
+ config.to_hash
111
+ expect(config).to be_kind_of(Confset::Options)
112
+ expect(config[:section]).to be_kind_of(Confset::Options)
113
+ expect(config[:section][:servers][0]).to be_kind_of(Confset::Options)
114
+ expect(config[:section][:servers][1]).to be_kind_of(Confset::Options)
115
+ end
116
+
117
+ it "should convert to a hash without modifying nested settings" do
118
+ config = Confset.load_files("spec/fixtures/development.yml")
119
+ config.to_h
120
+ expect(config).to be_kind_of(Confset::Options)
121
+ expect(config[:section]).to be_kind_of(Confset::Options)
122
+ expect(config[:section][:servers][0]).to be_kind_of(Confset::Options)
123
+ expect(config[:section][:servers][1]).to be_kind_of(Confset::Options)
124
+ end
125
+
126
+ it "should convert to a json" do
127
+ config = Confset.load_files("spec/fixtures/development.yml").to_json
128
+ expect(JSON.parse(config)["section"]["servers"]).to be_kind_of(Array)
129
+ end
130
+
131
+ it "should load an empty config for multiple missing file paths" do
132
+ files = ["spec/fixtures/empty1.yml", "spec/fixtures/empty2.yml"]
133
+ config = Confset.load_files(files)
134
+ expect(config).to be_empty
135
+ end
136
+
137
+ it "should allow overrides" do
138
+ files = ["spec/fixtures/settings.yml", "spec/fixtures/development.yml"]
139
+ config = Confset.load_files(files)
140
+ expect(config.server).to eq("google.com")
141
+ expect(config.size).to eq(2)
142
+ end
143
+
144
+ it "should allow full reload of the settings files" do
145
+ files = ["spec/fixtures/settings.yml"]
146
+ Confset.load_and_set_settings(files)
147
+ expect(Settings.server).to eq("google.com")
148
+ expect(Settings.size).to eq(1)
149
+
150
+ files = ["spec/fixtures/settings.yml", "spec/fixtures/development.yml"]
151
+ Settings.reload_from_files(files)
152
+ expect(Settings.server).to eq("google.com")
153
+ expect(Settings.size).to eq(2)
154
+ end
155
+
156
+
157
+
158
+ context "Nested Settings" do
159
+ let(:config) do
160
+ Confset.load_files("spec/fixtures/development.yml")
161
+ end
162
+
163
+ it "should allow nested sections" do
164
+ expect(config.section.size).to eq(3)
165
+ end
166
+
167
+ it "should allow configuration collections (arrays)" do
168
+ expect(config.section.servers[0].name).to eq("yahoo.com")
169
+ expect(config.section.servers[1].name).to eq("amazon.com")
170
+ end
171
+ end
172
+
173
+ context "Settings with ERB tags" do
174
+ let(:config) do
175
+ Confset.load_files("spec/fixtures/with_erb.yml")
176
+ end
177
+
178
+ it "should evaluate ERB tags" do
179
+ expect(config.computed).to eq(6)
180
+ end
181
+
182
+ it "should evaluated nested ERB tags" do
183
+ expect(config.section.computed1).to eq(1)
184
+ expect(config.section.computed2).to eq(2)
185
+ end
186
+ end
187
+
188
+
189
+ context "Boolean Overrides" do
190
+ let(:config) do
191
+ files = ["spec/fixtures/bool_override/config1.yml", "spec/fixtures/bool_override/config2.yml"]
192
+ Confset.load_files(files)
193
+ end
194
+
195
+ it "should allow overriding of bool settings" do
196
+ expect(config.override_bool).to eq(false)
197
+ expect(config.override_bool_opposite).to eq(true)
198
+ end
199
+ end
200
+
201
+ context "Custom Configuration" do
202
+ it "should have the default settings constant as 'Settings'" do
203
+ expect(Confset.const_name).to eq("Settings")
204
+ end
205
+
206
+ it "should be able to assign a different settings constant" do
207
+ Confset.setup { |config| config.const_name = "Settings2" }
208
+
209
+ expect(Confset.const_name).to eq("Settings2")
210
+ end
211
+ end
212
+
213
+ context "Settings with a type value of 'hash'" do
214
+ let(:config) do
215
+ files = ["spec/fixtures/custom_types/hash.yml"]
216
+ Confset.load_files(files)
217
+ end
218
+
219
+ it "should turn that setting into a Real Hash" do
220
+ expect(config.prices).to be_kind_of(Hash)
221
+ end
222
+
223
+ it "should map the hash values correctly" do
224
+ expect(config.prices[1]).to eq(2.99)
225
+ expect(config.prices[5]).to eq(9.99)
226
+ expect(config.prices[15]).to eq(19.99)
227
+ expect(config.prices[30]).to eq(29.99)
228
+ end
229
+ end
230
+
231
+ context "Merging hash at runtime" do
232
+ let(:config) { Confset.load_files("spec/fixtures/settings.yml") }
233
+ let(:hash) { { :options => { :suboption => "value" }, :server => "amazon.com" } }
234
+
235
+ it "should be chainable" do
236
+ expect(config.merge!({})).to eq(config)
237
+ end
238
+
239
+ it "should preserve existing keys" do
240
+ expect { config.merge!({}) }.to_not change { config.keys }
241
+ end
242
+
243
+ it "should recursively merge keys" do
244
+ config.merge!(hash)
245
+ expect(config.options.suboption).to eq("value")
246
+ end
247
+
248
+ it "should rewrite a merged value" do
249
+ expect { config.merge!(hash) }.to change { config.server }.from("google.com").to("amazon.com")
250
+ end
251
+ end
252
+
253
+ context "Merging nested hash at runtime" do
254
+ let(:config) { Confset.load_files("spec/fixtures/deep_merge/config1.yml") }
255
+ let(:hash) { { inner: { something1: "changed1", something3: "changed3" } } }
256
+ let(:hash_with_nil) { { inner: { something1: nil } } }
257
+
258
+ it "should preserve first level keys" do
259
+ expect { config.merge!(hash) }.to_not change { config.keys }
260
+ end
261
+
262
+ it "should preserve nested key" do
263
+ config.merge!(hash)
264
+ expect(config.inner.something2).to eq("blah2")
265
+ end
266
+
267
+ it "should add new nested key" do
268
+ expect { config.merge!(hash) }
269
+ .to change { config.inner.something3 }.from(nil).to("changed3")
270
+ end
271
+
272
+ it "should rewrite a merged value" do
273
+ expect { config.merge!(hash) }
274
+ .to change { config.inner.something1 }.from("blah1").to("changed1")
275
+ end
276
+
277
+ it "should update a string to nil " do
278
+ expect { config.merge!(hash_with_nil) }
279
+ .to change { config.inner.something1 }.from("blah1").to(nil)
280
+ end
281
+
282
+ it "should update something nil to true" do
283
+ expect { config.merge!(inner: { somethingnil: true }) }
284
+ .to change { config.inner.somethingnil }.from(nil).to(true)
285
+ end
286
+
287
+ it "should update something nil to false" do
288
+ expect { config.merge!(inner: { somethingnil: false }) }
289
+ .to change { config.inner.somethingnil }.from(nil).to(false)
290
+ end
291
+
292
+ it "should update something false to true" do
293
+ expect { config.merge!(inner: { somethingfalse: true }) }
294
+ .to change { config.inner.somethingfalse }.from(false).to(true)
295
+ end
296
+
297
+ it "should update something false to nil" do
298
+ expect { config.merge!(inner: { somethingfalse: nil }) }
299
+ .to change { config.inner.somethingfalse }.from(false).to(nil)
300
+ end
301
+
302
+ it "should update something true to false" do
303
+ expect { config.merge!(inner: { somethingtrue: false }) }
304
+ .to change { config.inner.somethingtrue }.from(true).to(false)
305
+ end
306
+
307
+ it "should update something true to nil" do
308
+ expect { config.merge!(inner: { somethingtrue: nil }) }
309
+ .to change { config.inner.somethingtrue }.from(true).to(nil)
310
+ end
311
+
312
+ context "with Confset.merge_nil_values = false" do
313
+ let(:config) do
314
+ Confset.merge_nil_values = false
315
+ Confset.load_files("spec/fixtures/deep_merge/config1.yml")
316
+ end
317
+
318
+ it "should not overwrite values with nil" do
319
+ old_value = config.inner.something1
320
+ config.merge!(hash_with_nil)
321
+ expect(config.inner.something1).to eq(old_value)
322
+ end
323
+ end
324
+ end
325
+
326
+ context "[] accessors" do
327
+ let(:config) do
328
+ files = ["spec/fixtures/development.yml"]
329
+ Confset.load_files(files)
330
+ end
331
+
332
+ it "should access attributes using []" do
333
+ expect(config.section["size"]).to eq(3)
334
+ expect(config.section[:size]).to eq(3)
335
+ expect(config[:section][:size]).to eq(3)
336
+ end
337
+
338
+ it "should set values using []=" do
339
+ config.section[:foo] = "bar"
340
+ expect(config.section.foo).to eq("bar")
341
+ end
342
+ end
343
+
344
+ context "enumerable" do
345
+ let(:config) do
346
+ files = ["spec/fixtures/development.yml"]
347
+ Confset.load_files(files)
348
+ end
349
+
350
+ it "should enumerate top level parameters" do
351
+ keys = []
352
+ config.each { |key, value| keys << key }
353
+ expect(keys).to eq([:size, :section])
354
+ end
355
+
356
+ it "should enumerate inner parameters" do
357
+ keys = []
358
+ config.section.each { |key, value| keys << key }
359
+ expect(keys).to eq([:size, :servers])
360
+ end
361
+
362
+ it "should have methods defined by Enumerable" do
363
+ expect(config.map { |key, value| key }).to eq([:size, :section])
364
+ end
365
+ end
366
+
367
+ context "keys" do
368
+ let(:config) do
369
+ files = ["spec/fixtures/development.yml"]
370
+ Confset.load_files(files)
371
+ end
372
+
373
+ it "should return array of keys" do
374
+ expect(config.keys).to contain_exactly(:size, :section)
375
+ end
376
+
377
+ it "should return array of keys for nested entry" do
378
+ expect(config.section.keys).to contain_exactly(:size, :servers)
379
+ end
380
+ end
381
+
382
+ context "when loading settings files" do
383
+ context "using knockout_prefix" do
384
+ context "in configuration phase" do
385
+ it "should be able to assign a different knockout_prefix value" do
386
+ Confset.knockout_prefix = "--"
387
+
388
+ expect(Confset.knockout_prefix).to eq("--")
389
+ end
390
+
391
+ it "should have the default knockout_prefix value equal nil" do
392
+ expect(Confset.knockout_prefix).to eq(nil)
393
+ end
394
+ end
395
+
396
+ context "merging" do
397
+ let(:config) do
398
+ Confset.knockout_prefix = "--"
399
+ Confset.overwrite_arrays = false
400
+ Confset.load_files(["spec/fixtures/knockout_prefix/config1.yml",
401
+ "spec/fixtures/knockout_prefix/config2.yml",
402
+ "spec/fixtures/knockout_prefix/config3.yml"])
403
+ end
404
+
405
+ it "should remove elements from settings" do
406
+ expect(config.array1).to eq(["item4", "item5", "item6"])
407
+ expect(config.array2.inner).to eq(["item4", "item5", "item6"])
408
+ expect(config.array3).to eq("")
409
+ expect(config.string1).to eq("")
410
+ expect(config.string2).to eq("")
411
+ expect(config.hash1.to_hash).to eq({ key1: "", key2: "", key3: "value3" })
412
+ expect(config.hash2).to eq("")
413
+ expect(config.hash3.to_hash).to eq({ key4: "value4", key5: "value5" })
414
+ expect(config.fixnum1).to eq("")
415
+ expect(config.fixnum2).to eq("")
416
+ end
417
+ end
418
+ end
419
+
420
+ context "using overwrite_arrays" do
421
+ context "in configuration phase" do
422
+ it "should be able to assign a different overwrite_arrays value" do
423
+ Confset.overwrite_arrays = false
424
+
425
+ expect(Confset.overwrite_arrays).to eq(false)
426
+ end
427
+
428
+ it "should have the default overwrite_arrays value equal false" do
429
+ expect(Confset.overwrite_arrays).to eq(true)
430
+ end
431
+ end
432
+
433
+ context "overwriting" do
434
+ let(:config) do
435
+ Confset.overwrite_arrays = true
436
+ Confset.load_files(["spec/fixtures/overwrite_arrays/config1.yml",
437
+ "spec/fixtures/overwrite_arrays/config2.yml",
438
+ "spec/fixtures/overwrite_arrays/config3.yml"])
439
+ end
440
+
441
+ it "should remove elements from settings" do
442
+ expect(config.array1).to eq(["item4", "item5", "item6"])
443
+ expect(config.array2.inner).to eq(["item4", "item5", "item6"])
444
+ expect(config.array3).to eq([])
445
+ end
446
+ end
447
+
448
+
449
+ context "merging" do
450
+ let(:config) do
451
+ Confset.overwrite_arrays = false
452
+ Confset.load_files(["spec/fixtures/deep_merge/config1.yml",
453
+ "spec/fixtures/deep_merge/config2.yml"])
454
+ end
455
+
456
+ it "should merge hashes from multiple configs" do
457
+ expect(config.inner.marshal_dump.keys.size).to eq(6)
458
+ expect(config.inner2.inner2_inner.marshal_dump.keys.size).to eq(3)
459
+ end
460
+
461
+ it "should merge arrays from multiple configs" do
462
+ expect(config.arraylist1.size).to eq(6)
463
+ expect(config.arraylist2.inner.size).to eq(6)
464
+ end
465
+ end
466
+ end
467
+ end
468
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ describe Confset::Configuration do
6
+ subject do
7
+ Module.new do
8
+ extend Confset::Configuration.new(hello: "world")
9
+ end
10
+ end
11
+
12
+ it "extends a module with additional methods" do
13
+ expect(subject.hello).to eq("world")
14
+ expect { subject.hello = "dlrow" }.to change { subject.hello }.to("dlrow")
15
+ end
16
+ end
@@ -0,0 +1,2 @@
1
+ override_bool: true
2
+ override_bool_opposite: false
@@ -0,0 +1,2 @@
1
+ override_bool: false
2
+ override_bool_opposite: true
@@ -0,0 +1,7 @@
1
+ prices:
2
+ type: hash
3
+ contents:
4
+ 1: 2.99
5
+ 5: 9.99
6
+ 15: 19.99
7
+ 30: 29.99
@@ -0,0 +1,31 @@
1
+ size: 1
2
+ server: google.com
3
+ inner:
4
+ something1: "blah1"
5
+ something2: "blah2"
6
+ somethingnil:
7
+ somethingfalse: false
8
+ somethingtrue: true
9
+
10
+ inner2:
11
+ inner2_inner:
12
+ foo1: "blah1"
13
+
14
+
15
+ arraylist1:
16
+ - 1
17
+ - 2
18
+ - 3
19
+
20
+ arraylist2:
21
+ inner:
22
+ - 1
23
+ - 2
24
+ - 3
25
+
26
+ hash_array:
27
+ - 1
28
+ - inner:
29
+ - 1
30
+ - 2
31
+ - 3
@@ -0,0 +1,28 @@
1
+ server: google.com
2
+
3
+ inner:
4
+ something3: "blah3"
5
+
6
+ inner2:
7
+ inner2_inner:
8
+ foo2: "blah2"
9
+ foo3: "blah3"
10
+
11
+ arraylist1:
12
+ - 4
13
+ - 5
14
+ - 6
15
+
16
+
17
+ arraylist2:
18
+ inner:
19
+ - 4
20
+ - 5
21
+ - 6
22
+
23
+ hash_array:
24
+ - 2
25
+ - inner:
26
+ - 4
27
+ - 5
28
+ - 6
@@ -0,0 +1,3 @@
1
+ tvrage:
2
+ service_url: 'http://services.tvrage.com'
3
+ cache: 500
@@ -0,0 +1,2 @@
1
+ tvrage:
2
+ service_url: "http://url2"
@@ -0,0 +1 @@
1
+ array: [{a: "one"}]
@@ -0,0 +1 @@
1
+ array: [{b: "two"}]
@@ -0,0 +1,4 @@
1
+ size: 2
2
+ section:
3
+ size: 3
4
+ servers: [ {name: yahoo.com}, {name: amazon.com} ]
File without changes
File without changes
@@ -0,0 +1,40 @@
1
+ array1:
2
+ - item1
3
+ - item2
4
+ - item3
5
+ - item4
6
+
7
+ array2:
8
+ inner:
9
+ - item1
10
+ - item2
11
+ - item3
12
+ - item4
13
+
14
+ array3:
15
+ - item1
16
+ - item2
17
+ - item3
18
+
19
+ string1: a_string
20
+
21
+ string2: another_string
22
+
23
+ hash1:
24
+ key1: value1
25
+ key2: value2
26
+ key3: value3
27
+
28
+ hash2:
29
+ key1: value1
30
+ key2: value2
31
+ key3: value3
32
+
33
+ hash3:
34
+ key1: value1
35
+ key2: value2
36
+ key3: value3
37
+
38
+ fixnum1: 1
39
+
40
+ fixnum2: 1
@@ -0,0 +1,28 @@
1
+ array1:
2
+ - --item1
3
+ - --item3
4
+ - item5
5
+
6
+ array2:
7
+ inner:
8
+ - --item1
9
+ - --item3
10
+ - item5
11
+
12
+ array3: --
13
+
14
+ string1: --a_string
15
+
16
+ string2: --
17
+
18
+ hash1:
19
+ key1: --value1
20
+ key2: --
21
+
22
+ hash2: --
23
+
24
+ hash3: --
25
+
26
+ fixnum1: --1
27
+
28
+ fixnum2: --
@@ -0,0 +1,14 @@
1
+ array1:
2
+ - --item2
3
+ - --item3
4
+ - item6
5
+
6
+ array2:
7
+ inner:
8
+ - --item2
9
+ - --item3
10
+ - item6
11
+
12
+ hash3:
13
+ key4: value4
14
+ key5: value5
@@ -0,0 +1,6 @@
1
+ development: &defaults
2
+ adapter: postgresql
3
+ encoding: unicode
4
+ test:
5
+ <<:*defaults
6
+ database: myapp_test
@@ -0,0 +1,10 @@
1
+ world:
2
+ capitals:
3
+ europe:
4
+ germany: 'Berlin'
5
+ poland: 'Warsaw'
6
+ australia: 'Sydney'
7
+ countries:
8
+ europe: 50
9
+ australia: 1
10
+ number_of_all_countries: 196