config 1.3.0 → 1.4.0

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: 596c969d80cfb2d6801d31bba080085e92a4ac6a
4
- data.tar.gz: 216e0648c48e36e8500d12158c8d337146a7db1c
3
+ metadata.gz: 73118a0190819d693e81132bc4a2746a453dd74d
4
+ data.tar.gz: 5c6a339dcfa60f444269f0ba45da298656297471
5
5
  SHA512:
6
- metadata.gz: fa84888d4bbc7c706a408c377771ffbd20bb1d2711a1eaf6aa49a068dac7e93fe5523187416c0ae5e47f891cf144ce697bfdfcab1127339bba9931a96738ba9b
7
- data.tar.gz: acaff95833ee702ce60d99284284e8db0dc5682b54ce1d4afb3c4af235702370bca792ccfa395f070d1e6b45de19726ec25523f1f7621155bf0986a8ffa6b9d3
6
+ metadata.gz: a28428c4f956dacbd9032fa97037819a15956eb0d694a48a4250425d3902ef9fd13bb67fcfdb011d1c67ea043476a386c2dd6e729de85a846ad13d2b772c67a5
7
+ data.tar.gz: 35fa737c860ca76a6c6aac73ccbdab4e5e399cfdf214d357e26cdd9e00fa1e3652a4701bfb73adcca498981cf67bd10c35088fe510d925605f43087f7cccee0b
@@ -1,8 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.4.0
4
+
5
+ * Added support for passing a raw ruby hash into to both `Settings.add_source!` and `Settings.prepend_source!` ([#108](https://github.com/railsconfig/config/pull/159) thanks to [@halloffame](https://github.com/halloffame))
6
+ * Added new reserved name `test` ([#158](https://github.com/railsconfig/config/pull/158) thanks to [@milushov](https://github.com/milushov))
7
+ * `to_hash` should not replace nested config objects with Hash ([#160](https://github.com/railsconfig/config/issues/160) thanks to [@seikichi](https://github.com/seikichi))
8
+
3
9
  ## 1.3.0
4
10
 
5
- * **WARNING:** Overwrite arrays found in previously loaded settings file ([#137](https://github.com/railsconfig/config/pull/137) thanks to [@Fryguy](https://github.com/Fryguy) and [@dtaniwaki](https://github.com/dtaniwaki)) - this is a change breaking previous behaviour. If you want to keep Config to work as before, which is merging arrays found in following loaded settings file, please add `config.overwrite_arrays = true` to your Config initializer
11
+ * **WARNING:** Overwrite arrays found in previously loaded settings file ([#137](https://github.com/railsconfig/config/pull/137) thanks to [@Fryguy](https://github.com/Fryguy) and [@dtaniwaki](https://github.com/dtaniwaki)) - this is a change breaking previous behaviour. If you want to keep Config to work as before, which is merging arrays found in following loaded settings file, please add `config.overwrite_arrays = false` to your Config initializer
6
12
  * Changed default ENV variables loading settings to downcase variable names and parse values
7
13
  * Added parsing ENV variables values to Float type
8
14
  * Change method definition order in Rails integration module to prevent undefined method `preload` error (based on [@YaroSpace](https://github.com/YaroSpace) suggestion in [#111](https://github.com/railsconfig/config/issues/111)
data/README.md CHANGED
@@ -64,6 +64,15 @@ set :root, File.dirname(__FILE__)
64
64
  register Config
65
65
  ```
66
66
 
67
+ ### Installing on other ruby projects
68
+
69
+ Add the gem to your `Gemfile` and run `bundle install` to install it.
70
+ Then initialize `Config` manually within your configure block.
71
+
72
+ ```ruby
73
+ Config.load_and_set_settings(Config.setting_files("/path/to/config_root", "your_project_environment"))
74
+ ```
75
+
67
76
  It's also possible to initialize `Config` manually within your configure block if you want to just give it some yml
68
77
  paths to load from.
69
78
 
@@ -184,6 +193,15 @@ Settings.reload!
184
193
  > Note: this is an example usage, it is easier to just use the default local files `settings.local.yml,
185
194
  settings/#{Rails.env}.local.yml and environments/#{Rails.env}.local.yml` for your developer specific settings.
186
195
 
196
+ You also have the option to add a raw hash as a source. One use case might be storing settings in the database or in environment variables that overwrite what is in the YML files.
197
+
198
+ ```ruby
199
+ Settings.add_source!({some_secret: ENV['some_secret']})
200
+ Settings.reload!
201
+ ```
202
+
203
+ You may pass a hash to `prepend_source!` as well.
204
+
187
205
  ## Embedded Ruby (ERB)
188
206
 
189
207
  Embedded Ruby is allowed in the configuration files. Consider the two following config files.
@@ -5,6 +5,7 @@ require 'config/options'
5
5
  require 'config/version'
6
6
  require 'config/integrations/rails/engine' if defined?(::Rails)
7
7
  require 'config/sources/yaml_source'
8
+ require 'config/sources/hash_source'
8
9
  require 'deep_merge'
9
10
 
10
11
  module Config
@@ -15,6 +15,7 @@ module Config
15
15
  def add_source!(source)
16
16
  # handle yaml file paths
17
17
  source = (Sources::YAMLSource.new(source)) if source.is_a?(String)
18
+ source = (Sources::HashSource.new(source)) if source.is_a?(Hash)
18
19
 
19
20
  @config_sources ||= []
20
21
  @config_sources << source
@@ -22,6 +23,7 @@ module Config
22
23
 
23
24
  def prepend_source!(source)
24
25
  source = (Sources::YAMLSource.new(source)) if source.is_a?(String)
26
+ source = (Sources::HashSource.new(source)) if source.is_a?(Hash)
25
27
 
26
28
  @config_sources ||= []
27
29
  @config_sources.unshift(source)
@@ -126,7 +128,7 @@ module Config
126
128
  end
127
129
 
128
130
  # Some keywords that don't play nicely with OpenStruct
129
- SETTINGS_RESERVED_NAMES = %w{select collect}
131
+ SETTINGS_RESERVED_NAMES = %w{select collect test}
130
132
 
131
133
  # An alternative mechanism for property access.
132
134
  # This let's you do foo['bar'] along with foo.bar.
@@ -148,15 +150,15 @@ module Config
148
150
  protected
149
151
 
150
152
  def descend_array(array)
151
- array.length.times do |i|
152
- value = array[i]
153
+ array.map do |value|
153
154
  if value.instance_of? Config::Options
154
- array[i] = value.to_hash
155
+ value.to_hash
155
156
  elsif value.instance_of? Array
156
- array[i] = descend_array(value)
157
+ descend_array(value)
158
+ else
159
+ value
157
160
  end
158
161
  end
159
- array
160
162
  end
161
163
 
162
164
  # Recursively converts Hashes to Options (including Hashes inside Arrays)
@@ -0,0 +1,16 @@
1
+ module Config
2
+ module Sources
3
+ class HashSource
4
+ attr_accessor :hash
5
+
6
+ def initialize(hash)
7
+ @hash = hash
8
+ end
9
+
10
+ # returns hash that was passed in to initialize
11
+ def load
12
+ hash.is_a?(Hash) ? hash : {}
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,3 +1,3 @@
1
1
  module Config
2
- VERSION = '1.3.0'
2
+ VERSION = '1.4.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: config
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotr Kuczynski
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-09-14 00:00:00.000000000 Z
13
+ date: 2016-12-20 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -265,6 +265,7 @@ files:
265
265
  - lib/config/integrations/sinatra.rb
266
266
  - lib/config/options.rb
267
267
  - lib/config/rack/reloader.rb
268
+ - lib/config/sources/hash_source.rb
268
269
  - lib/config/sources/yaml_source.rb
269
270
  - lib/config/tasks/heroku.rake
270
271
  - lib/config/version.rb
@@ -297,7 +298,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
297
298
  version: '0'
298
299
  requirements: []
299
300
  rubyforge_project:
300
- rubygems_version: 2.4.8
301
+ rubygems_version: 2.6.8
301
302
  signing_key:
302
303
  specification_version: 4
303
304
  summary: Effortless multi-environment settings in Rails, Sinatra, Pandrino and others