nifty_settings 1.0.1 → 1.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.
- checksums.yaml +4 -4
- data/.travis.yml +7 -0
- data/Gemfile +3 -0
- data/Guardfile +9 -0
- data/README.md +6 -1
- data/Rakefile +5 -0
- data/lib/nifty_settings/settings.rb +25 -14
- data/lib/nifty_settings/version.rb +1 -1
- data/nifty_settings.gemspec +13 -1
- data/spec/nifty_settings/settings_spec.rb +35 -0
- data/spec/spec_helper.rb +8 -0
- metadata +70 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c3f19a22952b832a051d656d2180fa939da773dd
|
4
|
+
data.tar.gz: f8c9c494f8b908efcb17597444cc4ffccf62da15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d3e5f5bf289e146b78804d4cb939c650f68c1d89de1b7d7da273f0ef49a5bc728cec6716a14bdad9b9b73838bd79ec74d412925db1389b855232a9140b5cbca
|
7
|
+
data.tar.gz: 37fcb9282e70ff784af7d76a74d5cbb094410f6159dd7158127ae2ef833031373c0057da2aadb9074a5db3826ad919c2abda4d09dcd7b6aeac01045db907c57a
|
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
guard 'rspec', cmd: 'bundle exec rspec', failed_mode: :none, all_after_pass: true, all_on_start: true do
|
2
|
+
# Specs
|
3
|
+
watch(%r(^spec/.+_spec\.rb$))
|
4
|
+
watch('spec/spec_helper.rb') { 'spec' }
|
5
|
+
watch(%r(^spec/support/(.+)\.rb$)) { 'spec' }
|
6
|
+
|
7
|
+
# Files
|
8
|
+
watch(%r(^lib/(.+)\.rb$)) { |m| "spec/#{m[1]}_spec.rb" }
|
9
|
+
end
|
data/README.md
CHANGED
@@ -1 +1,6 @@
|
|
1
|
-
# Settings
|
1
|
+
# Nifty Settings
|
2
|
+
|
3
|
+
[](http://badge.fury.io/rb/nifty_settings)
|
4
|
+
[](http://travis-ci.org/krautcomputing/nifty_settings)
|
5
|
+
[](https://gemnasium.com/krautcomputing/nifty_settings)
|
6
|
+
[](https://codeclimate.com/github/krautcomputing/nifty_settings)
|
data/Rakefile
ADDED
@@ -5,13 +5,27 @@ require 'erb'
|
|
5
5
|
module NiftySettings
|
6
6
|
class Settings
|
7
7
|
def initialize(hash = {})
|
8
|
-
@hash = Hash.new { |h,k| h[k] = self.class.new }
|
8
|
+
@hash = Hash.new { |h, k| h[k] = self.class.new }
|
9
9
|
hash.each_pair { |k, v| self[k] = v }
|
10
10
|
end
|
11
11
|
|
12
12
|
def to_hash
|
13
13
|
unpack_attr @hash
|
14
14
|
end
|
15
|
+
alias_method :to_h, :to_hash
|
16
|
+
|
17
|
+
def to_ary
|
18
|
+
self.to_hash.values
|
19
|
+
end
|
20
|
+
alias_method :to_a, :to_ary
|
21
|
+
|
22
|
+
def to_s
|
23
|
+
if self.nil?
|
24
|
+
nil
|
25
|
+
else
|
26
|
+
self.to_hash
|
27
|
+
end.to_s
|
28
|
+
end
|
15
29
|
|
16
30
|
def []=(k, v)
|
17
31
|
@hash[k.to_sym] = normalize_attr(v)
|
@@ -30,13 +44,10 @@ module NiftySettings
|
|
30
44
|
has?(key) ? self[key] : default
|
31
45
|
end
|
32
46
|
|
33
|
-
def
|
34
|
-
@hash.
|
35
|
-
end
|
36
|
-
|
37
|
-
def present?
|
38
|
-
!blank?
|
47
|
+
def empty?
|
48
|
+
@hash.empty?
|
39
49
|
end
|
50
|
+
alias_method :nil?, :empty?
|
40
51
|
|
41
52
|
def method_missing(name, *args, &blk)
|
42
53
|
name = name.to_s
|
@@ -69,15 +80,15 @@ module NiftySettings
|
|
69
80
|
$stderr.puts "Unable to load settings from #{settings_path} - Please check it exists and is readable."
|
70
81
|
return {}
|
71
82
|
end
|
72
|
-
if env.nil?
|
73
|
-
$stderr.puts 'Could not determine environment. If not using Rails, please set RACK_ENV env variable.'
|
74
|
-
return {}
|
75
|
-
end
|
76
83
|
# Otherwise, try loading...
|
77
84
|
contents = File.read(settings_path)
|
78
85
|
contents = ERB.new(contents).result
|
79
86
|
contents = YAML.load(contents)
|
80
|
-
|
87
|
+
if env.nil?
|
88
|
+
contents
|
89
|
+
else
|
90
|
+
(contents['default'] || {}).deep_merge(contents[env] || {})
|
91
|
+
end
|
81
92
|
end
|
82
93
|
|
83
94
|
def default
|
@@ -128,7 +139,7 @@ module NiftySettings
|
|
128
139
|
value.to_hash
|
129
140
|
when Hash
|
130
141
|
Hash.new.tap do |h|
|
131
|
-
value.each_pair { |k,v| h[k] = unpack_attr(v) }
|
142
|
+
value.each_pair { |k, v| h[k] = unpack_attr(v) }
|
132
143
|
end
|
133
144
|
when Array
|
134
145
|
value.map { |v| unpack_attr(v) }
|
@@ -144,7 +155,7 @@ unless Hash.new.respond_to?(:deep_merge)
|
|
144
155
|
class Hash
|
145
156
|
def deep_merge(other_hash, &block)
|
146
157
|
self.dup.tap do |this_hash|
|
147
|
-
other_hash.each_pair do |k,v|
|
158
|
+
other_hash.each_pair do |k, v|
|
148
159
|
tv = this_hash[k]
|
149
160
|
if tv.is_a?(Hash) && v.is_a?(Hash)
|
150
161
|
this_hash[k] = tv.deep_merge(v, &block)
|
data/nifty_settings.gemspec
CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |gem|
|
|
8
8
|
gem.version = NiftySettings::VERSION
|
9
9
|
gem.platform = Gem::Platform::RUBY
|
10
10
|
gem.authors = ['Manuel Meurer']
|
11
|
-
gem.email = 'manuel
|
11
|
+
gem.email = 'manuel@krautcomputing.com'
|
12
12
|
gem.summary = 'Settings'
|
13
13
|
gem.description = 'Settings'
|
14
14
|
gem.homepage = ''
|
@@ -18,4 +18,16 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.executables = gem.files.grep(%r(^bin/)).map { |f| File.basename(f) }
|
19
19
|
gem.test_files = gem.files.grep(%r(^(test|spec|features)/))
|
20
20
|
gem.require_paths = ['lib']
|
21
|
+
|
22
|
+
gem.add_development_dependency 'rake', '>= 0.9.0'
|
23
|
+
gem.add_development_dependency 'rspec', '~> 2.14.0'
|
24
|
+
gem.add_development_dependency 'rb-fsevent', '~> 0.9.0'
|
25
|
+
if RUBY_VERSION < '1.9.3'
|
26
|
+
# Use older Guard version that uses older Listen version since
|
27
|
+
# Listen >= 2.0.0 only works with Ruby >= 1.9.3
|
28
|
+
gem.add_development_dependency 'guard-rspec', '~> 3.1.0'
|
29
|
+
gem.add_development_dependency 'listen', '< 2.0.0' if RUBY_VERSION < '1.9.3'
|
30
|
+
else
|
31
|
+
gem.add_development_dependency 'guard-rspec', '~> 4.2.0'
|
32
|
+
end
|
21
33
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NiftySettings::Settings do
|
4
|
+
let(:settings_hash) { { foo: 'bar' } }
|
5
|
+
let(:settings) { NiftySettings::Settings.new(settings_hash) }
|
6
|
+
let(:empty_settings) { NiftySettings::Settings.new }
|
7
|
+
|
8
|
+
context 'accessing a setting' do
|
9
|
+
context "when it's not present" do
|
10
|
+
it 'returns nil' do
|
11
|
+
expect(settings.not_found).to be_nil
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context "when it's present" do
|
16
|
+
it 'returns the setting' do
|
17
|
+
expect(settings.foo).to eq('bar')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '#to_s' do
|
23
|
+
context 'when no settings are stored' do
|
24
|
+
it 'returns an empty string' do
|
25
|
+
expect(empty_settings.to_s).to eq('')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
context 'when settings are stored' do
|
30
|
+
it 'returns a string representation of the settings' do
|
31
|
+
expect(settings.to_s).to eq(settings_hash.to_s)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,28 +1,90 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nifty_settings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manuel Meurer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
12
|
-
dependencies:
|
11
|
+
date: 2014-03-23 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.9.0
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.9.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.14.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.14.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rb-fsevent
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.9.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.9.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: guard-rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 4.2.0
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 4.2.0
|
13
69
|
description: Settings
|
14
|
-
email: manuel
|
70
|
+
email: manuel@krautcomputing.com
|
15
71
|
executables: []
|
16
72
|
extensions: []
|
17
73
|
extra_rdoc_files: []
|
18
74
|
files:
|
75
|
+
- .travis.yml
|
76
|
+
- Gemfile
|
77
|
+
- Guardfile
|
19
78
|
- LICENSE.txt
|
20
79
|
- README.md
|
80
|
+
- Rakefile
|
21
81
|
- lib/nifty_settings.rb
|
22
82
|
- lib/nifty_settings/railtie.rb
|
23
83
|
- lib/nifty_settings/settings.rb
|
24
84
|
- lib/nifty_settings/version.rb
|
25
85
|
- nifty_settings.gemspec
|
86
|
+
- spec/nifty_settings/settings_spec.rb
|
87
|
+
- spec/spec_helper.rb
|
26
88
|
homepage: ''
|
27
89
|
licenses:
|
28
90
|
- MIT
|
@@ -43,9 +105,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
43
105
|
version: '0'
|
44
106
|
requirements: []
|
45
107
|
rubyforge_project:
|
46
|
-
rubygems_version: 2.
|
108
|
+
rubygems_version: 2.2.2
|
47
109
|
signing_key:
|
48
110
|
specification_version: 4
|
49
111
|
summary: Settings
|
50
|
-
test_files:
|
51
|
-
|
112
|
+
test_files:
|
113
|
+
- spec/nifty_settings/settings_spec.rb
|
114
|
+
- spec/spec_helper.rb
|