rsettings 0.1.0 → 0.2.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/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ branches:
6
+ only:
7
+ - master
8
+ gemfile: Gemfile
9
+ notifications:
10
+ recipients:
11
+ - ben.biddington@gmail.com
data/Gemfile CHANGED
@@ -1,8 +1,9 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem "rake"
3
+ gem "audible"
4
4
 
5
5
  group :development do
6
+ gem "rake"
6
7
  gem "rspec"
7
8
  gem "bundler"
8
9
  gem "jeweler", "~> 1.8.4"
data/Gemfile.lock CHANGED
@@ -2,6 +2,7 @@ GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
4
  addressable (2.3.5)
5
+ audible (0.1.0)
5
6
  builder (3.2.2)
6
7
  diff-lcs (1.2.4)
7
8
  faraday (0.8.8)
@@ -57,6 +58,7 @@ PLATFORMS
57
58
  ruby
58
59
 
59
60
  DEPENDENCIES
61
+ audible
60
62
  bundler
61
63
  jeweler (~> 1.8.4)
62
64
  rake
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -1,17 +1,19 @@
1
1
  class EnvironmentSettings
2
+ require "audible"; include Audible;
3
+
2
4
  def initialize
3
5
  @vars = VariableList.new
4
6
  end
5
7
 
6
8
  def get(name)
7
9
  real_name = @vars.name name
8
- ENV[name.to_s].tap{|it| fail_because_setting_is_missing(name) if it.nil?}
10
+ ENV[name.to_s].tap{|it| notify_missing(name) if it.nil?}
9
11
  end
10
12
 
11
13
  private
12
14
 
13
- def fail_because_setting_is_missing(name)
14
- fail "Setting <#{name}> not found"
15
+ def notify_missing(name)
16
+ notify :missing, name
15
17
  end
16
18
  end
17
19
 
@@ -0,0 +1,33 @@
1
+ class SettingsConfiguration
2
+ attr_reader :missing
3
+
4
+ def initialize
5
+ @missing = FailOnMissing.new
6
+ end
7
+
8
+ def let(opts = {})
9
+ _opts.merge! opts.invert
10
+ end
11
+
12
+ def when_missing(type)
13
+ @missing = IgnoreMissing.new if type === :ignore
14
+ end
15
+
16
+ def name_for(setting)
17
+ _opts[setting] || setting
18
+ end
19
+
20
+ private
21
+
22
+ def _opts; @opts ||= {}; end
23
+ end
24
+
25
+ class IgnoreMissing
26
+ def on_missing(name); end
27
+ end
28
+
29
+ class FailOnMissing
30
+ def on_missing(name)
31
+ fail "Setting <#{name}> not found"
32
+ end
33
+ end
data/lib/rsettings.rb CHANGED
@@ -4,6 +4,7 @@ Dir.glob(File.join(dir, "rsettings", "**", "*.rb")).each {|f| require f}
4
4
 
5
5
  class Settings
6
6
  def initialize(&block)
7
+ @settings = EnvironmentSettings.new
7
8
  @config = SettingsConfiguration.new
8
9
 
9
10
  if block_given?
@@ -11,6 +12,10 @@ class Settings
11
12
  conf.instance_exec &block
12
13
  end
13
14
  end
15
+
16
+ @settings.on :missing do |e,args|
17
+ @config.missing.on_missing args.first
18
+ end
14
19
  end
15
20
 
16
21
  def method_missing(m, *args, &block)
@@ -18,20 +23,6 @@ class Settings
18
23
 
19
24
  setting_name = @config.name_for m
20
25
 
21
- EnvironmentSettings.new.get(setting_name)
22
- end
23
- end
24
-
25
- class SettingsConfiguration
26
- def let(opts = {})
27
- _opts.merge! opts.invert
26
+ @settings.get(setting_name)
28
27
  end
29
-
30
- def name_for(setting)
31
- _opts[setting] || setting
32
- end
33
-
34
- private
35
-
36
- def _opts; @opts ||= {}; end
37
28
  end
data/rsettings.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "rsettings"
8
- s.version = "0.1.0"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ben Biddington"]
12
- s.date = "2013-12-06"
12
+ s.date = "2013-12-10"
13
13
  s.description = "Settings"
14
14
  s.email = "ben.biddington@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  ]
20
20
  s.files = [
21
21
  ".document",
22
+ ".travis.yml",
22
23
  "Gemfile",
23
24
  "Gemfile.lock",
24
25
  "LICENSE.txt",
@@ -28,10 +29,12 @@ Gem::Specification.new do |s|
28
29
  "VERSION",
29
30
  "lib/rsettings.rb",
30
31
  "lib/rsettings/adapters/environment_settings.rb",
32
+ "lib/rsettings/settings_configuration.rb",
31
33
  "rsettings.gemspec",
32
34
  "settings.gemspec",
33
35
  "spec/spec_helper.rb",
34
- "spec/system.tests/can_use_env_spec.rb"
36
+ "spec/system.tests/can_use_env_spec.rb",
37
+ "spec/system.tests/options_spec.rb"
35
38
  ]
36
39
  s.homepage = "http://github.com/ben-biddington/rsettings"
37
40
  s.licenses = ["MIT"]
@@ -43,17 +46,20 @@ Gem::Specification.new do |s|
43
46
  s.specification_version = 3
44
47
 
45
48
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
46
- s.add_runtime_dependency(%q<rake>, [">= 0"])
49
+ s.add_runtime_dependency(%q<audible>, [">= 0"])
50
+ s.add_development_dependency(%q<rake>, [">= 0"])
47
51
  s.add_development_dependency(%q<rspec>, [">= 0"])
48
52
  s.add_development_dependency(%q<bundler>, [">= 0"])
49
53
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
50
54
  else
55
+ s.add_dependency(%q<audible>, [">= 0"])
51
56
  s.add_dependency(%q<rake>, [">= 0"])
52
57
  s.add_dependency(%q<rspec>, [">= 0"])
53
58
  s.add_dependency(%q<bundler>, [">= 0"])
54
59
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
55
60
  end
56
61
  else
62
+ s.add_dependency(%q<audible>, [">= 0"])
57
63
  s.add_dependency(%q<rake>, [">= 0"])
58
64
  s.add_dependency(%q<rspec>, [">= 0"])
59
65
  s.add_dependency(%q<bundler>, [">= 0"])
@@ -0,0 +1,18 @@
1
+ require "spec_helper"
2
+
3
+ describe "what to do when a setting is missing" do
4
+ before { ENV.clear }
5
+
6
+ it "fails by default" do
7
+ settings = Settings.new
8
+ expect{settings.one_that_does_not_exist}.to raise_error /<one_that_does_not_exist> not found/
9
+ end
10
+
11
+ it "you can instruct it to do nothing" do
12
+ settings = Settings.new do
13
+ when_missing :ignore
14
+ end
15
+
16
+ expect(settings.one_that_does_not_exist).to be_nil
17
+ end
18
+ 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.1.0
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,10 +9,10 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-06 00:00:00.000000000 Z
12
+ date: 2013-12-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rake
15
+ name: audible
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
@@ -27,6 +27,22 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: rspec
32
48
  requirement: !ruby/object:Gem::Requirement
@@ -85,6 +101,7 @@ extra_rdoc_files:
85
101
  - README.rdoc
86
102
  files:
87
103
  - .document
104
+ - .travis.yml
88
105
  - Gemfile
89
106
  - Gemfile.lock
90
107
  - LICENSE.txt
@@ -94,10 +111,12 @@ files:
94
111
  - VERSION
95
112
  - lib/rsettings.rb
96
113
  - lib/rsettings/adapters/environment_settings.rb
114
+ - lib/rsettings/settings_configuration.rb
97
115
  - rsettings.gemspec
98
116
  - settings.gemspec
99
117
  - spec/spec_helper.rb
100
118
  - spec/system.tests/can_use_env_spec.rb
119
+ - spec/system.tests/options_spec.rb
101
120
  homepage: http://github.com/ben-biddington/rsettings
102
121
  licenses:
103
122
  - MIT
@@ -113,7 +132,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
132
  version: '0'
114
133
  segments:
115
134
  - 0
116
- hash: -894220717
135
+ hash: 106447213
117
136
  required_rubygems_version: !ruby/object:Gem::Requirement
118
137
  none: false
119
138
  requirements: