nifty_settings 1.1.7 → 2.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +1 -1
- data/CHANGELOG.md +10 -1
- data/README.md +6 -3
- data/lib/nifty_settings.rb +8 -0
- data/lib/nifty_settings/settings.rb +26 -29
- data/lib/nifty_settings/version.rb +1 -1
- data/nifty_settings.gemspec +4 -11
- data/spec/nifty_settings/settings_spec.rb +70 -30
- data/spec/spec_helper.rb +0 -1
- data/spec/support/{settings.yml → settings1.yml} +0 -0
- data/spec/support/settings2.yml +1 -0
- data/spec/support/settings3.yml +1 -0
- metadata +24 -21
- data/spec/support/settings_empty.yml +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d295420005dfbdfaa51b187c0b0fd2586c036fee
|
4
|
+
data.tar.gz: 8dd9664844c4074cb72b7ef44e12af70c699c316
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: abf8e34f7edb80a87c94a04fda3b3a7d42f9ce00e362ec3cfb24ef79ae497daeaf5566a962de1303959731f03b338c56561dad64cb1af7c3e69ee43e790f5bde
|
7
|
+
data.tar.gz: 1f5748a556ecae8c4f58da8cf20f58734e268c3705e8d3c18049b277ca1b2fd68b7722f60e8062e68322f36ee5667227c1fd1ef21e497af6853f240c813cd74e
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Gemfile.lock
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,13 @@
|
|
1
|
-
#
|
1
|
+
# 2.0.0
|
2
|
+
|
3
|
+
* Drop support for Ruby 1.9
|
4
|
+
* Add support for loading files from settings dir
|
5
|
+
|
6
|
+
# 1.1.7
|
7
|
+
|
8
|
+
* Fix merging env settings
|
9
|
+
|
10
|
+
# 1.1.6
|
2
11
|
|
3
12
|
* Enable setting a custom settings file path via `NiftySettings::Settings.settings_path = '...'`
|
4
13
|
* Don't throw an exception when settings file is empty
|
data/README.md
CHANGED
@@ -90,12 +90,15 @@ true
|
|
90
90
|
|
91
91
|
## Configuration
|
92
92
|
|
93
|
-
###
|
93
|
+
### File locations
|
94
94
|
|
95
|
-
|
95
|
+
NiftySettings loads settings from a default file (`config/settings.yml`) and all YAML files in a default folder (`config/settings/*.yml`). This allows you to put simple settings in the default file but group related settings in dedicated files in the default folder.
|
96
|
+
|
97
|
+
Both locations can be customized:
|
96
98
|
|
97
99
|
```ruby
|
98
|
-
|
100
|
+
NiftySettings.configuration.settings_file = '/home/shared/other_settings.yml'
|
101
|
+
NiftySettings.configuration.settings_folder = Rails.root.join('config', 'my_settings')
|
99
102
|
```
|
100
103
|
|
101
104
|
### Namespacing
|
data/lib/nifty_settings.rb
CHANGED
@@ -53,7 +53,7 @@ module NiftySettings
|
|
53
53
|
end
|
54
54
|
alias_method :nil?, :empty?
|
55
55
|
|
56
|
-
def method_missing(name, *args, &
|
56
|
+
def method_missing(name, *args, &block)
|
57
57
|
name = name.to_s
|
58
58
|
key, modifier = name[0..-2], name[-1, 1]
|
59
59
|
case
|
@@ -63,56 +63,53 @@ module NiftySettings
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
def respond_to?(name,
|
66
|
+
def respond_to?(name, include_all = false)
|
67
67
|
true
|
68
68
|
end
|
69
69
|
|
70
70
|
class << self
|
71
|
-
def
|
72
|
-
|
73
|
-
end
|
74
|
-
|
75
|
-
def settings_path
|
76
|
-
@@settings_path ||= root.join('config', 'settings.yml').to_s
|
77
|
-
end
|
71
|
+
def load
|
72
|
+
files = []
|
78
73
|
|
79
|
-
|
80
|
-
|
81
|
-
|
74
|
+
settings_file = NiftySettings.configuration.settings_file || self.root.join('config', 'settings.yml')
|
75
|
+
if File.file?(settings_file)
|
76
|
+
files << settings_file
|
77
|
+
end
|
82
78
|
|
83
|
-
|
84
|
-
if
|
85
|
-
|
86
|
-
return {}
|
79
|
+
settings_dir = NiftySettings.configuration.settings_dir || self.root.join('config', 'settings')
|
80
|
+
if File.directory?(settings_dir)
|
81
|
+
files.concat Dir[File.join(settings_dir, '*.yml')]
|
87
82
|
end
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
contents
|
94
|
-
|
95
|
-
|
83
|
+
|
84
|
+
return {} if files.empty?
|
85
|
+
|
86
|
+
files.inject({}) do |hash, file|
|
87
|
+
contents = File.read(file)
|
88
|
+
contents = ERB.new(contents).result
|
89
|
+
contents = YAML.load(contents) || {}
|
90
|
+
if env
|
91
|
+
contents = (contents['default'] || {}).deep_merge(contents[env] || {})
|
92
|
+
end
|
93
|
+
hash.deep_merge contents
|
96
94
|
end
|
97
95
|
end
|
98
96
|
|
99
97
|
def default
|
100
|
-
@@default ||= new(
|
98
|
+
@@default ||= self.new(self.load)
|
101
99
|
end
|
102
100
|
|
103
101
|
def reset!
|
104
102
|
@@default = nil
|
105
103
|
default # Force us to reload the settings
|
106
104
|
# If a setup block is defined, call it post configuration.
|
107
|
-
@setup_callback.call if defined?(@setup_callback) && @setup_callback
|
108
105
|
true
|
109
106
|
end
|
110
107
|
|
111
|
-
def method_missing(name, *args, &
|
112
|
-
default.send(name, *args, &
|
108
|
+
def method_missing(name, *args, &block)
|
109
|
+
default.send(name, *args, &block)
|
113
110
|
end
|
114
111
|
|
115
|
-
def respond_to?(name,
|
112
|
+
def respond_to?(name, include_all = false)
|
116
113
|
true
|
117
114
|
end
|
118
115
|
|
data/nifty_settings.gemspec
CHANGED
@@ -19,15 +19,8 @@ Gem::Specification.new do |gem|
|
|
19
19
|
gem.test_files = gem.files.grep(%r(^(test|spec|features)/))
|
20
20
|
gem.require_paths = ['lib']
|
21
21
|
|
22
|
-
gem.
|
23
|
-
gem.add_development_dependency '
|
24
|
-
gem.add_development_dependency '
|
25
|
-
|
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
|
22
|
+
gem.add_dependency 'gem_config', '~> 0.3'
|
23
|
+
gem.add_development_dependency 'rake', '~> 10.4'
|
24
|
+
gem.add_development_dependency 'rspec', '~> 3.2'
|
25
|
+
gem.add_development_dependency 'guard-rspec', '~> 4.5'
|
33
26
|
end
|
@@ -86,42 +86,82 @@ describe NiftySettings::Settings do
|
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
|
-
describe '.
|
89
|
+
describe '.load' do
|
90
90
|
context 'without Rails and RACK_ENV' do
|
91
91
|
before do
|
92
92
|
# Make sure `ENV['RACK_ENV']` is not set and Rails is not loaded
|
93
|
-
# so that the loaded settings are not scoped to the env
|
93
|
+
# so that the loaded settings are not scoped to the env.
|
94
94
|
ENV['RACK_ENV'] = nil
|
95
95
|
raise 'Rails should not be loaded.' if defined?(Rails)
|
96
|
-
end
|
97
|
-
|
98
|
-
it 'loads the settings from the default location' do
|
99
|
-
# Reset settings path in case it has been modified
|
100
|
-
NiftySettings::Settings.settings_path = nil
|
101
|
-
|
102
|
-
# Copy settings file to default location
|
103
|
-
settings_file = File.expand_path('../../support/settings.yml', __FILE__)
|
104
|
-
default_settings_file = File.expand_path('../../../config/settings.yml', __FILE__)
|
105
|
-
FileUtils.mkdir_p File.dirname(default_settings_file)
|
106
|
-
FileUtils.cp settings_file, default_settings_file
|
107
|
-
|
108
|
-
settings = NiftySettings::Settings.load_from_file
|
109
|
-
expect(settings).to eq('foo' => 'bar')
|
110
|
-
|
111
|
-
# Delete settings file again
|
112
|
-
FileUtils.rm default_settings_file
|
113
|
-
end
|
114
|
-
|
115
|
-
it 'can load the settings from a custom location' do
|
116
|
-
NiftySettings::Settings.settings_path = File.expand_path('../../support/settings.yml', __FILE__)
|
117
|
-
settings = NiftySettings::Settings.load_from_file
|
118
|
-
expect(settings).to eq('foo' => 'bar')
|
119
|
-
end
|
120
96
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
97
|
+
FileUtils.mkdir_p settings_dir
|
98
|
+
end
|
99
|
+
|
100
|
+
after do
|
101
|
+
Dir[File.join(settings_dir, '*.yml')].unshift(settings_file).each do |file|
|
102
|
+
File.delete file if File.exist?(file)
|
103
|
+
end
|
104
|
+
%i(settings_file settings_dir).each do |config|
|
105
|
+
NiftySettings.configuration.unset config
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
let(:settings_file) { File.expand_path('../../../config/settings.yml', __FILE__) }
|
110
|
+
let(:settings_dir) { File.expand_path('../../../config/settings', __FILE__) }
|
111
|
+
1.upto(3).each do |i|
|
112
|
+
let(:"support_settings_file_#{i}") { File.expand_path("../../support/settings#{i}.yml", __FILE__) }
|
113
|
+
end
|
114
|
+
|
115
|
+
context 'when only the settings file exists' do
|
116
|
+
context 'in the default location' do
|
117
|
+
before do
|
118
|
+
FileUtils.cp support_settings_file_1, settings_file
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'loads the settings' do
|
122
|
+
settings = NiftySettings::Settings.load
|
123
|
+
expect(settings).to eq('foo' => 'bar')
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
context 'in a custom location' do
|
128
|
+
before do
|
129
|
+
NiftySettings.configuration.settings_file = support_settings_file_1
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'loads the settings' do
|
133
|
+
settings = NiftySettings::Settings.load
|
134
|
+
expect(settings).to eq('foo' => 'bar')
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
138
|
+
|
139
|
+
context 'when only a file in the settings dir exists' do
|
140
|
+
before do
|
141
|
+
FileUtils.cp support_settings_file_1, settings_dir
|
142
|
+
end
|
143
|
+
|
144
|
+
it 'loads the settings' do
|
145
|
+
settings = NiftySettings::Settings.load
|
146
|
+
expect(settings).to eq('foo' => 'bar')
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
context 'when the settings file and files in the settings dir exist' do
|
151
|
+
before do
|
152
|
+
FileUtils.cp support_settings_file_1, settings_file
|
153
|
+
FileUtils.cp support_settings_file_2, settings_dir
|
154
|
+
FileUtils.cp support_settings_file_3, settings_dir
|
155
|
+
end
|
156
|
+
|
157
|
+
it 'loads the settings' do
|
158
|
+
settings = NiftySettings::Settings.load
|
159
|
+
expect(settings).to eq(
|
160
|
+
'foo' => 'bar',
|
161
|
+
'pelle' => 'fant',
|
162
|
+
'zing' => 'zang'
|
163
|
+
)
|
164
|
+
end
|
125
165
|
end
|
126
166
|
end
|
127
167
|
end
|
data/spec/spec_helper.rb
CHANGED
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
pelle: fant
|
@@ -0,0 +1 @@
|
|
1
|
+
zing: zang
|
metadata
CHANGED
@@ -1,77 +1,78 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nifty_settings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.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:
|
11
|
+
date: 2015-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: gem_config
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :
|
19
|
+
version: '0.3'
|
20
|
+
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
26
|
+
version: '0.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: '10.4'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: '10.4'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: '3.2'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: '3.2'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: guard-rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 4.
|
61
|
+
version: '4.5'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 4.
|
68
|
+
version: '4.5'
|
69
69
|
description: A nifty way to save and access application-wide settings.
|
70
70
|
email: manuel@krautcomputing.com
|
71
71
|
executables: []
|
72
72
|
extensions: []
|
73
73
|
extra_rdoc_files: []
|
74
74
|
files:
|
75
|
+
- ".gitignore"
|
75
76
|
- ".travis.yml"
|
76
77
|
- CHANGELOG.md
|
77
78
|
- Gemfile
|
@@ -87,8 +88,9 @@ files:
|
|
87
88
|
- nifty_settings.gemspec
|
88
89
|
- spec/nifty_settings/settings_spec.rb
|
89
90
|
- spec/spec_helper.rb
|
90
|
-
- spec/support/
|
91
|
-
- spec/support/
|
91
|
+
- spec/support/settings1.yml
|
92
|
+
- spec/support/settings2.yml
|
93
|
+
- spec/support/settings3.yml
|
92
94
|
homepage: http://krautcomputing.github.io/nifty_settings/
|
93
95
|
licenses:
|
94
96
|
- MIT
|
@@ -109,13 +111,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
111
|
version: '0'
|
110
112
|
requirements: []
|
111
113
|
rubyforge_project:
|
112
|
-
rubygems_version: 2.
|
114
|
+
rubygems_version: 2.4.5
|
113
115
|
signing_key:
|
114
116
|
specification_version: 4
|
115
117
|
summary: A nifty way to save and access application-wide settings.
|
116
118
|
test_files:
|
117
119
|
- spec/nifty_settings/settings_spec.rb
|
118
120
|
- spec/spec_helper.rb
|
119
|
-
- spec/support/
|
120
|
-
- spec/support/
|
121
|
+
- spec/support/settings1.yml
|
122
|
+
- spec/support/settings2.yml
|
123
|
+
- spec/support/settings3.yml
|
121
124
|
has_rdoc:
|
File without changes
|