rsettings 0.0.1 → 0.1.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.
- data/VERSION +1 -1
- data/lib/rsettings.rb +29 -2
- data/rsettings.gemspec +63 -0
- data/spec/system.tests/can_use_env_spec.rb +57 -1
- metadata +3 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0
|
1
|
+
0.1.0
|
data/lib/rsettings.rb
CHANGED
@@ -3,8 +3,35 @@ dir = File.join(File.dirname(__FILE__))
|
|
3
3
|
Dir.glob(File.join(dir, "rsettings", "**", "*.rb")).each {|f| require f}
|
4
4
|
|
5
5
|
class Settings
|
6
|
-
def
|
6
|
+
def initialize(&block)
|
7
|
+
@config = SettingsConfiguration.new
|
8
|
+
|
9
|
+
if block_given?
|
10
|
+
@config = SettingsConfiguration.new.tap do |conf|
|
11
|
+
conf.instance_exec &block
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def method_missing(m, *args, &block)
|
7
17
|
fail "Only support queries, cannot do <#{m}>" unless args.empty?
|
8
|
-
|
18
|
+
|
19
|
+
setting_name = @config.name_for m
|
20
|
+
|
21
|
+
EnvironmentSettings.new.get(setting_name)
|
9
22
|
end
|
10
23
|
end
|
24
|
+
|
25
|
+
class SettingsConfiguration
|
26
|
+
def let(opts = {})
|
27
|
+
_opts.merge! opts.invert
|
28
|
+
end
|
29
|
+
|
30
|
+
def name_for(setting)
|
31
|
+
_opts[setting] || setting
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def _opts; @opts ||= {}; end
|
37
|
+
end
|
data/rsettings.gemspec
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = "rsettings"
|
8
|
+
s.version = "0.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Ben Biddington"]
|
12
|
+
s.date = "2013-12-06"
|
13
|
+
s.description = "Settings"
|
14
|
+
s.email = "ben.biddington@gmail.com"
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE.txt",
|
17
|
+
"README.md",
|
18
|
+
"README.rdoc"
|
19
|
+
]
|
20
|
+
s.files = [
|
21
|
+
".document",
|
22
|
+
"Gemfile",
|
23
|
+
"Gemfile.lock",
|
24
|
+
"LICENSE.txt",
|
25
|
+
"README.md",
|
26
|
+
"README.rdoc",
|
27
|
+
"Rakefile",
|
28
|
+
"VERSION",
|
29
|
+
"lib/rsettings.rb",
|
30
|
+
"lib/rsettings/adapters/environment_settings.rb",
|
31
|
+
"rsettings.gemspec",
|
32
|
+
"settings.gemspec",
|
33
|
+
"spec/spec_helper.rb",
|
34
|
+
"spec/system.tests/can_use_env_spec.rb"
|
35
|
+
]
|
36
|
+
s.homepage = "http://github.com/ben-biddington/rsettings"
|
37
|
+
s.licenses = ["MIT"]
|
38
|
+
s.require_paths = ["lib"]
|
39
|
+
s.rubygems_version = "1.8.23"
|
40
|
+
s.summary = "Settings for ruby programs"
|
41
|
+
|
42
|
+
if s.respond_to? :specification_version then
|
43
|
+
s.specification_version = 3
|
44
|
+
|
45
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
46
|
+
s.add_runtime_dependency(%q<rake>, [">= 0"])
|
47
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
48
|
+
s.add_development_dependency(%q<bundler>, [">= 0"])
|
49
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
50
|
+
else
|
51
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
52
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
53
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
54
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
55
|
+
end
|
56
|
+
else
|
57
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
58
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
59
|
+
s.add_dependency(%q<bundler>, [">= 0"])
|
60
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
@@ -17,7 +17,63 @@ describe "Can use environment variables as a settings list" do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it "does type matter? Ought I be able to expect numbers for example. Currently all are strings."
|
20
|
-
|
20
|
+
|
21
|
+
it "can supply mappings" do
|
22
|
+
settings = Settings.new do
|
23
|
+
let "U" => :username
|
24
|
+
let "P" => :password
|
25
|
+
end
|
26
|
+
|
27
|
+
ENV["U"] = "graeme.hay"
|
28
|
+
ENV["P"] = "allblacks"
|
29
|
+
|
30
|
+
expect(settings.username).to eql "graeme.hay"
|
31
|
+
expect(settings.password).to eql "allblacks"
|
32
|
+
end
|
33
|
+
|
34
|
+
it "you can map some and not others" do
|
35
|
+
settings_configured_with_username_mapping_only = Settings.new do
|
36
|
+
let "U" => :username
|
37
|
+
end
|
38
|
+
|
39
|
+
ENV["U"] = "graeme.hay"
|
40
|
+
ENV["P"] = "allblacks"
|
41
|
+
|
42
|
+
expect(settings_configured_with_username_mapping_only.username).to eql "graeme.hay"
|
43
|
+
expect(settings_configured_with_username_mapping_only.P).to eql "allblacks"
|
44
|
+
end
|
45
|
+
|
46
|
+
it "you can map none" do
|
47
|
+
settings_configured_with_nothing = Settings.new do
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
ENV["U"] = "graeme.hay"
|
52
|
+
ENV["P"] = "allblacks"
|
53
|
+
|
54
|
+
expect(settings_configured_with_nothing.U).to eql "graeme.hay"
|
55
|
+
expect(settings_configured_with_nothing.P).to eql "allblacks"
|
56
|
+
end
|
57
|
+
|
58
|
+
it "You can have a setting called :new and/or :initialize" do
|
59
|
+
settings = Settings.new
|
60
|
+
|
61
|
+
ENV["new"] = "okay"
|
62
|
+
ENV["initialize"] = "yes please"
|
63
|
+
|
64
|
+
expect(settings.new).to eql "okay"
|
65
|
+
expect(settings.initialize).to eql "yes please"
|
66
|
+
end
|
67
|
+
|
68
|
+
it "make sure you can use setting name 'configure'" do
|
69
|
+
settings = Settings.new
|
70
|
+
|
71
|
+
ENV["configure"] = "xxx_conf_xxx"
|
72
|
+
|
73
|
+
expect(settings.configure).to eql "xxx_conf_xxx"
|
74
|
+
end
|
75
|
+
|
76
|
+
it "I wonder if ignoring missing settings would be nice -- at least allow me the option"
|
21
77
|
|
22
78
|
# Can't use metaclass because class < Object which has lots of methods defined. BasicObject is what we want.
|
23
79
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rsettings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -94,6 +94,7 @@ files:
|
|
94
94
|
- VERSION
|
95
95
|
- lib/rsettings.rb
|
96
96
|
- lib/rsettings/adapters/environment_settings.rb
|
97
|
+
- rsettings.gemspec
|
97
98
|
- settings.gemspec
|
98
99
|
- spec/spec_helper.rb
|
99
100
|
- spec/system.tests/can_use_env_spec.rb
|
@@ -112,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
112
113
|
version: '0'
|
113
114
|
segments:
|
114
115
|
- 0
|
115
|
-
hash: -
|
116
|
+
hash: -894220717
|
116
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
118
|
none: false
|
118
119
|
requirements:
|