easy_settings 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 827b69b45d86134959d77d73490c8531bc213b78
4
- data.tar.gz: 5605569579894ee23ebdc06fa923c455f212d32c
3
+ metadata.gz: 366d74abf13192efbab8c9441bc9fa51d83ccbe1
4
+ data.tar.gz: d3c86143c642fc900ca00ac5ee8cce947eddeec2
5
5
  SHA512:
6
- metadata.gz: 5a1fa628bbe199f431ee8434c17763fb083a385a3c2984921d686e6c4ed97a0f49a667e403197e8f1d10c3414735fa23b9732d46e9dc890778701cd550705725
7
- data.tar.gz: 6f3bd2bb344cb2f6a9ad27b20673fda388b89a2fc05f89fcc1943cfc4005ca57ca18cf65c370fccfbf4be95634a33a88db5461329abfab68a2ae28926c6ff6d4
6
+ metadata.gz: f6f1dc3c8fbe9bddb391824e99409791ced68ea24ffea5078bddff11f823de66a7419c776c92ffb8beba6719524a96f46188d2fbc977304b9a7785899fa1337d
7
+ data.tar.gz: 9041525ccd526ffd115c5914676ca74930ff2d0a2ad94aea44289cef3af48255b7543240855156af1fd01b670c27356b0efc9074628c8a1806813879b279ceff
@@ -4,11 +4,16 @@ require "erb"
4
4
 
5
5
  class EasySettings < Hashie::Mash
6
6
  SourceFileNotExist = Class.new(StandardError)
7
-
8
- DEFAULT_FILES = %w(settings.yml config/settings.yml)
9
-
10
7
  class << self
11
- attr_accessor :source_hash, :source_file, :namespace
8
+ attr_accessor :source_hash, :source_file, :namespace, :default_files
9
+
10
+ def inherited(child_class)
11
+ child_class.class_eval do
12
+ define_singleton_method(:default_files) do
13
+ instance_variable_get(:@default_files) || superclass.default_files
14
+ end
15
+ end
16
+ end
12
17
 
13
18
  def instance
14
19
  @instance ||= new(namespace ? _source[namespace] : _source)
@@ -53,7 +58,7 @@ class EasySettings < Hashie::Mash
53
58
  end
54
59
 
55
60
  def _source_from_default_file
56
- DEFAULT_FILES.each do |f|
61
+ default_files.each do |f|
57
62
  path = File.expand_path(f, _root_path)
58
63
  return _load_file(path) if FileTest.exist?(path)
59
64
  end
@@ -69,6 +74,8 @@ class EasySettings < Hashie::Mash
69
74
  end
70
75
  end
71
76
 
77
+ self.default_files = %w(settings.yml config/settings.yml)
78
+
72
79
  def assign_property(name, value)
73
80
  super
74
81
  self[name]
@@ -1,3 +1,3 @@
1
1
  module EasySettingsVersion
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -0,0 +1 @@
1
+ app_name: Child Class 1
@@ -0,0 +1 @@
1
+ app_name: Child Class 2
@@ -0,0 +1 @@
1
+ app_name: Grand Child
@@ -9,6 +9,6 @@ defaults: &defaults
9
9
  role: manager
10
10
  erb: <%= "This was set by ERB" %>
11
11
 
12
- test:
12
+ test:
13
13
  <<: *defaults
14
14
  app_name: EasySettingsTest
@@ -33,7 +33,7 @@ shared_examples_for "EasySettings" do |proc|
33
33
  settings.foo = :bar
34
34
  expect(settings.foo).to eq :bar
35
35
 
36
- admin3 = {"password" => "PassWord3", "role" => "administrator"}
36
+ admin3 = { "password" => "PassWord3", "role" => "administrator" }
37
37
  settings.admins.admin3 = admin3
38
38
  expect(settings.admins.admin3.to_h).to eq admin3
39
39
  end
@@ -42,7 +42,7 @@ shared_examples_for "EasySettings" do |proc|
42
42
  settings[:foo] = :bar
43
43
  expect(settings.foo).to eq :bar
44
44
 
45
- admin3 = {"password" => "PassWord3", "role" => "administrator"}
45
+ admin3 = { "password" => "PassWord3", "role" => "administrator" }
46
46
  settings[:admins][:admin3] = admin3
47
47
  expect(settings.admins.admin3.to_h).to eq admin3
48
48
  end
@@ -120,46 +120,26 @@ shared_examples_for "EasySettings" do |proc|
120
120
 
121
121
  it "can set nil when using nil option" do
122
122
  expect(settings.newkey(nil, nil: true)).to be_nil
123
- expect(settings.has_key?(:newkey)).to be_truthy
123
+ expect(settings.key?(:newkey)).to be_truthy
124
124
  expect(settings.newkey).to be_nil
125
125
  end
126
126
 
127
127
  it "doesn't set nil when not using nil option" do
128
128
  expect(settings.newkey(nil)).to be_nil
129
- expect(settings.has_key?(:newkey)).to be_falsey
129
+ expect(settings.key?(:newkey)).to be_falsey
130
130
  end
131
131
  end
132
132
  end
133
133
 
134
- describe EasySettings do
135
- before do
136
- FileUtils.mkdir File.expand_path("../../config", __FILE__)
137
- end
138
-
139
- after do
140
- FileUtils.rm_rf File.expand_path("../../config", __FILE__)
141
- end
134
+ require "helpers/default_paths"
142
135
 
143
- let(:settings) do
144
- Class.new(EasySettings)
145
- end
146
-
147
- let(:test_settings_file) do
148
- File.expand_path("../settings.yml", __FILE__)
149
- end
150
-
151
- let(:default_settings_path1) do
152
- File.expand_path("../../settings.yml", __FILE__)
153
- end
154
-
155
- let(:default_settings_path2) do
156
- File.expand_path("../../config/settings.yml", __FILE__)
157
- end
136
+ describe EasySettings do
137
+ include_context "default_paths"
158
138
 
159
139
  let(:custom_settings_path) do
160
140
  File.expand_path("../../config/application.yml", __FILE__)
161
141
  end
162
-
142
+
163
143
  let(:app_name) do
164
144
  "EasySettingsTest"
165
145
  end
@@ -173,12 +153,12 @@ describe EasySettings do
173
153
  FileUtils.rm_f default_settings_path1
174
154
  end
175
155
 
176
- it_behaves_like("EasySettings", Proc.new{Class.new(EasySettings)})
156
+ it_behaves_like("EasySettings", proc { Class.new(EasySettings) })
177
157
 
178
158
  describe ".reload!" do
179
159
  it "can reload source" do
180
160
  expect(settings.app_name).to eq app_name
181
- settings.source_hash = {app_name: "RELOAD"}
161
+ settings.source_hash = { app_name: "RELOAD" }
182
162
  expect(settings.reload!).to be_truthy
183
163
  expect(settings.app_name).to eq "RELOAD"
184
164
  end
@@ -194,7 +174,7 @@ describe EasySettings do
194
174
  FileUtils.rm_f default_settings_path2
195
175
  end
196
176
 
197
- it_behaves_like("EasySettings", Proc.new{Class.new(EasySettings)})
177
+ it_behaves_like("EasySettings", proc { Class.new(EasySettings) })
198
178
  end
199
179
 
200
180
  context "from custom path" do
@@ -208,7 +188,7 @@ describe EasySettings do
208
188
 
209
189
  it_behaves_like(
210
190
  "EasySettings",
211
- Proc.new do
191
+ proc do
212
192
  Class.new(EasySettings) do
213
193
  self.source_file = File.expand_path("../../config/application.yml", __FILE__)
214
194
  end
@@ -219,8 +199,8 @@ describe EasySettings do
219
199
  context "from source hash" do
220
200
  it_behaves_like(
221
201
  "EasySettings",
222
- Proc.new do
223
- source_file = File.expand_path("../settings.yml", __FILE__)
202
+ proc do
203
+ source_file = File.expand_path("../config/settings.yml", __FILE__)
224
204
  Class.new(EasySettings) do
225
205
  self.source_file = source_file
226
206
  self.source_hash = YAML.load_file(source_file)
@@ -232,9 +212,9 @@ describe EasySettings do
232
212
  context "with namespace" do
233
213
  it_behaves_like(
234
214
  "EasySettings",
235
- Proc.new do
215
+ proc do
236
216
  Class.new(EasySettings) do
237
- self.source_file = File.expand_path("../settings_with_namespace.yml", __FILE__)
217
+ self.source_file = File.expand_path("../config/namespace.yml", __FILE__)
238
218
  self.namespace = "test"
239
219
  end
240
220
  end
@@ -249,7 +229,7 @@ describe EasySettings do
249
229
 
250
230
  context "with empty source" do
251
231
  it "EasySettings become empty hash" do
252
- settings.source_file = File.expand_path("../empty_settings.yml", __FILE__)
232
+ settings.source_file = File.join(spec_config_path, "empty.yml")
253
233
  expect(settings.to_h).to eq({})
254
234
  end
255
235
  end
@@ -257,7 +237,7 @@ describe EasySettings do
257
237
  context "specify wrong source path" do
258
238
  it "raise error" do
259
239
  settings.source_file = "notexist.yml"
260
- expect{settings.to_h}.to raise_error(EasySettings::SourceFileNotExist)
240
+ expect { settings.to_h }.to raise_error(EasySettings::SourceFileNotExist)
261
241
  end
262
242
  end
263
243
  end
@@ -0,0 +1,23 @@
1
+ shared_context "default_paths" do
2
+ let!(:gem_root) { File.expand_path("../../../", __FILE__) }
3
+ let!(:config_path) { File.join(gem_root, "config") }
4
+ let!(:spec_root) { File.join(gem_root, "spec") }
5
+ let!(:spec_config_path) { File.join(spec_root, "config") }
6
+
7
+ before do
8
+ FileUtils.mkdir config_path
9
+ end
10
+
11
+ after do
12
+ FileUtils.rm_rf config_path
13
+ end
14
+
15
+ let(:test_settings_file) do
16
+ File.join(spec_config_path, "settings.yml")
17
+ end
18
+
19
+ let(:default_settings_path1) { File.join(gem_root, "settings.yml") }
20
+ let(:default_settings_path2) { File.join(config_path, "settings.yml") }
21
+
22
+ let(:settings) { Class.new(EasySettings) }
23
+ end
@@ -0,0 +1,39 @@
1
+ require "helpers/default_paths"
2
+
3
+ describe "inheritance" do
4
+ include_context "default_paths"
5
+
6
+ subject(:child_class1) do
7
+ Class.new(settings) do
8
+ self.default_files = [File.expand_path("../config/child1.yml", __FILE__)]
9
+ end
10
+ end
11
+
12
+ let(:child_class2) do
13
+ Class.new(settings) do
14
+ self.default_files = [File.expand_path("../config/child2.yml", __FILE__)]
15
+ end
16
+ end
17
+ before { FileUtils.cp test_settings_file, default_settings_path1 }
18
+ after { FileUtils.rm default_settings_path1 }
19
+
20
+ it "has different value from parent's one" do
21
+ expect(child_class1.app_name).not_to eq EasySettings.app_name
22
+ end
23
+
24
+ it "has differnt value from other child class's one" do
25
+ expect(child_class1.app_name).not_to eq child_class2.app_name
26
+ end
27
+
28
+ describe "grandchild" do
29
+ subject(:grand_child) do
30
+ Class.new(child_class1) do
31
+ self.default_files = [File.expand_path("../config/grand_child.yml", __FILE__)]
32
+ end
33
+ end
34
+
35
+ it "has different valud from child's one" do
36
+ expect(grand_child.app_name).not_to eq child_class1.app_name
37
+ end
38
+ end
39
+ end
@@ -10,7 +10,7 @@ if ENV["CI"]
10
10
  end
11
11
 
12
12
  require "fileutils"
13
- require "easy_settings"
13
+ require "easy_settings"
14
14
 
15
15
  RSpec.configure do |config|
16
16
  # rspec-expectations config goes here. You can use an alternate
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_settings
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - nownabe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-29 00:00:00.000000000 Z
11
+ date: 2015-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hashie
@@ -126,6 +126,12 @@ files:
126
126
  - lib/easy_settings.rb
127
127
  - lib/easy_settings/rails.rb
128
128
  - lib/easy_settings_version.rb
129
+ - spec/config/child1.yml
130
+ - spec/config/child2.yml
131
+ - spec/config/empty.yml
132
+ - spec/config/grand_child.yml
133
+ - spec/config/namespace.yml
134
+ - spec/config/settings.yml
129
135
  - spec/easy_settings_spec.rb
130
136
  - spec/easy_settings_test/.env
131
137
  - spec/easy_settings_test/.gitignore
@@ -177,9 +183,8 @@ files:
177
183
  - spec/easy_settings_test/spec/rails_helper.rb
178
184
  - spec/easy_settings_test/spec/spec_helper.rb
179
185
  - spec/easy_settings_test/vendor/assets/stylesheets/.keep
180
- - spec/empty_settings.yml
181
- - spec/settings.yml
182
- - spec/settings_with_namespace.yml
186
+ - spec/helpers/default_paths.rb
187
+ - spec/inheritance_spec.rb
183
188
  - spec/spec_helper.rb
184
189
  homepage: https://github.com/nownabe/easy_settings
185
190
  licenses:
@@ -206,6 +211,12 @@ signing_key:
206
211
  specification_version: 4
207
212
  summary: EasySettings is a simple settings with YAML file.
208
213
  test_files:
214
+ - spec/config/child1.yml
215
+ - spec/config/child2.yml
216
+ - spec/config/empty.yml
217
+ - spec/config/grand_child.yml
218
+ - spec/config/namespace.yml
219
+ - spec/config/settings.yml
209
220
  - spec/easy_settings_spec.rb
210
221
  - spec/easy_settings_test/.env
211
222
  - spec/easy_settings_test/.gitignore
@@ -257,8 +268,6 @@ test_files:
257
268
  - spec/easy_settings_test/spec/rails_helper.rb
258
269
  - spec/easy_settings_test/spec/spec_helper.rb
259
270
  - spec/easy_settings_test/vendor/assets/stylesheets/.keep
260
- - spec/empty_settings.yml
261
- - spec/settings.yml
262
- - spec/settings_with_namespace.yml
271
+ - spec/helpers/default_paths.rb
272
+ - spec/inheritance_spec.rb
263
273
  - spec/spec_helper.rb
264
- has_rdoc: