runger_config 2.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +562 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +1121 -0
  5. data/lib/anyway/auto_cast.rb +53 -0
  6. data/lib/anyway/config.rb +473 -0
  7. data/lib/anyway/dynamic_config.rb +31 -0
  8. data/lib/anyway/ejson_parser.rb +40 -0
  9. data/lib/anyway/env.rb +73 -0
  10. data/lib/anyway/ext/deep_dup.rb +48 -0
  11. data/lib/anyway/ext/deep_freeze.rb +44 -0
  12. data/lib/anyway/ext/flatten_names.rb +37 -0
  13. data/lib/anyway/ext/hash.rb +40 -0
  14. data/lib/anyway/ext/string_constantize.rb +24 -0
  15. data/lib/anyway/loaders/base.rb +21 -0
  16. data/lib/anyway/loaders/doppler.rb +63 -0
  17. data/lib/anyway/loaders/ejson.rb +89 -0
  18. data/lib/anyway/loaders/env.rb +18 -0
  19. data/lib/anyway/loaders/yaml.rb +84 -0
  20. data/lib/anyway/loaders.rb +79 -0
  21. data/lib/anyway/option_parser_builder.rb +29 -0
  22. data/lib/anyway/optparse_config.rb +92 -0
  23. data/lib/anyway/rails/autoload.rb +42 -0
  24. data/lib/anyway/rails/config.rb +23 -0
  25. data/lib/anyway/rails/loaders/credentials.rb +64 -0
  26. data/lib/anyway/rails/loaders/secrets.rb +37 -0
  27. data/lib/anyway/rails/loaders/yaml.rb +9 -0
  28. data/lib/anyway/rails/loaders.rb +5 -0
  29. data/lib/anyway/rails/settings.rb +83 -0
  30. data/lib/anyway/rails.rb +24 -0
  31. data/lib/anyway/railtie.rb +28 -0
  32. data/lib/anyway/rbs.rb +92 -0
  33. data/lib/anyway/settings.rb +111 -0
  34. data/lib/anyway/testing/helpers.rb +36 -0
  35. data/lib/anyway/testing.rb +13 -0
  36. data/lib/anyway/tracing.rb +188 -0
  37. data/lib/anyway/type_casting.rb +144 -0
  38. data/lib/anyway/utils/deep_merge.rb +21 -0
  39. data/lib/anyway/utils/which.rb +18 -0
  40. data/lib/anyway/version.rb +5 -0
  41. data/lib/anyway.rb +3 -0
  42. data/lib/anyway_config.rb +54 -0
  43. data/lib/generators/anyway/app_config/USAGE +9 -0
  44. data/lib/generators/anyway/app_config/app_config_generator.rb +17 -0
  45. data/lib/generators/anyway/config/USAGE +13 -0
  46. data/lib/generators/anyway/config/config_generator.rb +51 -0
  47. data/lib/generators/anyway/config/templates/config.rb.tt +12 -0
  48. data/lib/generators/anyway/config/templates/config.yml.tt +13 -0
  49. data/lib/generators/anyway/install/USAGE +4 -0
  50. data/lib/generators/anyway/install/install_generator.rb +47 -0
  51. data/lib/generators/anyway/install/templates/application_config.rb.tt +17 -0
  52. data/sig/anyway_config.rbs +149 -0
  53. data/sig/manifest.yml +6 -0
  54. metadata +202 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6dd3b9e8a53894c367009b4ce3e15ce9f6a178d4288572c7ba0551dbdc2244d0
4
+ data.tar.gz: d20a48187b7ad307eb0ce9ae1a7cfa5f6ef9b8dce97b95576e59ba2cf829e1e6
5
+ SHA512:
6
+ metadata.gz: 8b44be9da2bf7ad76e767ecf85ff9aff9c69208754a19bc515d5d5844ad65ed9500cb9f70ccdf46b50bc30e7572f0adc62d86026a88642c1c50b6f6096260801
7
+ data.tar.gz: 38af17f45c96347c2e6dabaa9c115dcac7fdf1b720f65138c425823e48eac602690a9707aed8cd4e8829dd6a3d80634779863a8d8a34474b2d2494a100393bf8
data/CHANGELOG.md ADDED
@@ -0,0 +1,562 @@
1
+ # Change log
2
+
3
+ ## v2.6.0 (2023-11-19)
4
+
5
+ - Don't deep stringify keys
6
+
7
+ ## 2.5.4 (2023-10-15)
8
+
9
+ - Fix tracing with empty config keys. ([@palkan][])
10
+
11
+ ## 2.5.3 (2023-09-12)
12
+
13
+ - Do not activate Rails secrets loaders in 7.1+. ([@palkan][])
14
+
15
+ - Set `use_local_files` depending on `Rails.env`. ([@marshall-lee][])
16
+
17
+ ## 2.5.2 (2023-08-23)
18
+
19
+ - Disable Rails post-load detection in TruffleRuby. ([@palkan][])
20
+
21
+ ## 2.5.1 (2023-08-04)
22
+
23
+ - Fix Rails detection. ([@palkan][])
24
+
25
+ Fixes [#134](https://github.com/palkan/anyway_config/issues/134).
26
+
27
+ ## 2.5.0 (2023-07-24)
28
+
29
+ - Generators: Add `config_name` to generated classes if name contains underscore. ([@palkan][])
30
+
31
+ - Load Rails extensions even if Rails was loaded after Anyway Config. ([@palkan][])
32
+
33
+ - Fix handling `config.credentials.content_path` provided as String. ([@palkan][])
34
+
35
+ ## 2.4.2 (2023-06-07)
36
+
37
+ - Use ANYWAY_ENV as the current environment if defined. ([@palkan][])
38
+
39
+ It can be used to specify environment for configs independently of Rails environment.
40
+
41
+ ## 2.4.1 (2023-05-04)
42
+
43
+ - Add custom namespace support via `ejson_namespace` ([@bessey])
44
+
45
+ - Add arbitrary custom loader options support via `loader_options` ([@bessey])
46
+
47
+ ## 2.4.0 (2023-04-04)
48
+
49
+ - Added `Confi#as_env` to convert config into a ENV-like Hash. ([@tagirahmad][])
50
+
51
+ - Added experimental support for sub-configs via coercion. ([@palkan][])
52
+
53
+ ```ruby
54
+ class AnotherConfig < Anyway::Config
55
+ attr_config foo: "bar"
56
+ end
57
+
58
+ class MyConfig < Anyway::Config
59
+ attr_config :another_config
60
+
61
+ coerce_types another_config: "AnotherConfig"
62
+ end
63
+
64
+ MyConfig.new.another_config.foo #=> "bar"
65
+
66
+ ENV["MY_ANOTHER_CONFIG__FOO"] = "baz"
67
+ MyConfig.new.another_config.foo #=> "baz"
68
+ ```
69
+
70
+ - Define predicate methods when `:boolean` type is specified for the attribute. ([@palkan][])
71
+
72
+ - Add support for nested required config attributes. ([@palkan][])
73
+
74
+ The API is inspired by Rails permitted params:
75
+
76
+ ```ruby
77
+ class AppConfig < Anyway::Config
78
+ attr_config :assets_host, database: {host: nil, port: nil}
79
+
80
+ required :assets_host, database: [:host, :port]
81
+ end
82
+ ```
83
+
84
+ - Add support for using `env_prefix ""` to load from unprefixed env vars. ([@palkan][])
85
+
86
+ See [#118](https://github.com/palkan/anyway_config/issues/118).
87
+
88
+ - Added EJSON support. ([@inner-whisper])
89
+
90
+ - Add Doppler loader. ([@prog-supdex][]).
91
+
92
+ ## 2.3.1 (2023-01-17)
93
+
94
+ - [Fixes [#110](https://github.com/palkan/anyway_config/issues/110)] Fix setting up autoloader for the same folder. ([@palkan][])
95
+
96
+ - RBS: Now `.on_load` automatically pass block context type (instance), so no need to add annotations! ([@palkan][])
97
+
98
+ Steep 1.2+ is required. Read more about the [feature](https://hackmd.io/xLrYaqUtQ1GhgTHODkYypw?view).
99
+
100
+ - Added `manifest.yml` for RBS. ([@palkan][])
101
+
102
+ ## 2.3.0 (2022-03-11)
103
+
104
+ - Add ability to load configurations under specific environments in pure Ruby apps. ([@fargelus][]).
105
+
106
+ Before loading environment configurations you need to specify variable `Anyway::Settings.current_environment`. In Rails apps this variable is same as `Rails.env` value.
107
+ After adding yaml loader will try to load params under this environment.
108
+
109
+ Also required env option was added to `Anyway::Config`.
110
+
111
+ ## 2.2.3 (2022-01-21)
112
+
113
+ - Fix Ruby 3.1 compatibility. ([@palkan][])
114
+
115
+ - Add ability to set default key for environmental YAML files. ([@skryukov])
116
+
117
+ Define a key for environmental yaml files to read default values from with `config.anyway_config.default_environmental_key = "default"`.
118
+ This way Anyway Config will try to read settings under the `"default"` key and then merge environmental settings into them.
119
+
120
+ ## 2.2.2 (2020-10-26)
121
+
122
+ - Fixed regression introduced by the `#deep_merge!` refinement.
123
+
124
+ ## 2.2.1 (2020-09-28)
125
+
126
+ - Minor fixes to the prev release.
127
+
128
+ ## 2.2.0 ⛓ (2020-09-28)
129
+
130
+ - Add RBS signatures and generator. ([@palkan][])
131
+
132
+ Anyway Config now ships with the basic RBS support. To use config types with Steep, add `library "anyway_config"` to your Steepfile.
133
+
134
+ We also provide an API to generate a signature for you config class: `MyConfig.to_rbs`. You can use this method to generate a scaffold for your config class.
135
+
136
+ - Add type coercion support. ([@palkan][])
137
+
138
+ Example:
139
+
140
+ ```ruby
141
+ class CoolConfig < Anyway::Config
142
+ attr_config :port, :user
143
+
144
+ coerce_types port: :string, user: {dob: :date}
145
+ end
146
+
147
+ ENV["COOL_USER__DOB"] = "1989-07-01"
148
+
149
+ config = CoolConfig.new({port: 8080})
150
+ config.port == "8080" #=> true
151
+ config.user["dob"] == Date.new(1989, 7, 1) #=> true
152
+ ```
153
+
154
+ You can also add `.disable_auto_cast!` to your config class to disable automatic conversion.
155
+
156
+ **Warning** Now values from all sources are coerced (e.g., YAML files). That could lead to a different behaviour.
157
+
158
+ - Do not dup modules/classes passed as configuration values. ([@palkan][])
159
+
160
+ - Handle loading empty YAML config files. ([@micahlee][])
161
+
162
+ ## 2.1.0 (2020-12-29)
163
+
164
+ - Drop deprecated `attr_config` instance variables support.
165
+
166
+ Config setters no longer write instance variables.
167
+
168
+ - Add `config.anyway_config.future` to allow enabling upcoming features. ([@palkan][])
169
+
170
+ For smoother upgrades, we provide a mechanism to opt-out to the new defaults beforehand.
171
+ Currently, only `:unwrap_known_environments` feature could be enabled (see below):
172
+
173
+ ```ruby
174
+ config.anyway_config.future.use :unwrap_known_environments
175
+ ```
176
+
177
+ - Allow to skip environment keys completely (e.g., `development:`, `test:`) in a config YML when used with Rails. In that case same config is loaded in all known environments (same mechanism as for non-Rails applications)
178
+
179
+ - Add the `known_environments` property to Anyway::Settings under Rails. Use `config.anyway_config.known_environments << "staging"` to make the gem aware of custom environments. ([@progapandist][])
180
+
181
+ - Make it possible to specify default YML configs directory. ([@palkan][])
182
+
183
+ For example:
184
+
185
+ ```ruby
186
+ Anyway::Settings.default_config_path = "path/to/configs"
187
+
188
+ # or in Rails
189
+ config.anyway_config.default_config_path = Rails.root.join("my/configs")
190
+ ```
191
+
192
+ ## 2.0.6 (2020-07-7)
193
+
194
+ - Fix Ruby 2.7 warnings. ([@palkan][])
195
+
196
+ ## 2.0.5 (2020-05-15)
197
+
198
+ - Use `YAML.load` instead of `YAML.safe_laad`. ([@palkan][])
199
+
200
+ ## 2.0.4 (2020-05-15)
201
+
202
+ - Fix regression with adding `ruby-next` as a runtime dependency even for RubyGems release. ([@palkan][])
203
+
204
+ ## 2.0.3 (2020-05-12)
205
+
206
+ - Enable [auto-transpiling](https://github.com/ruby-next/ruby-next#transpiled-files-vs-vcs-vs-installing-from-source) to allow installing from source. ([@palkan][])
207
+
208
+ ## 2.0.2 (2020-04-24)
209
+
210
+ - Make sure configs are eager loaded in Rails when `config.eager_load = true`. ([@palkan][])
211
+
212
+ Fixes [#58](https://github.com/palkan/anyway_config/issues/58).
213
+
214
+ ## 2.0.1 (2020-04-15)
215
+
216
+ - Fix loading Railtie when application has been already initialized. ([@palkan][])
217
+
218
+ Fixes [#56](https://github.com/palkan/anyway_config/issues/56).
219
+
220
+ ## 2.0.0 (2020-04-14)
221
+
222
+ - Fix double `yield` in tracing for ENV loader. ([@Envek][])
223
+
224
+ ## 2.0.0.rc1 (2020-03-31)
225
+
226
+ - Add predicate methods for attributes with boolean defaults. ([@palkan][])
227
+
228
+ For example:
229
+
230
+ ```ruby
231
+ class MyConfig < Anyway::Config
232
+ attr_config :key, :secret, debug: false
233
+ end
234
+
235
+ MyConfig.new.debug? #=> false
236
+ MyConfig.new(debug: true).debug? #=> true
237
+ ```
238
+
239
+ - Add `Config#deconstruct_keys`. ([@palkan][])
240
+
241
+ Now you can use configs in pattern matching:
242
+
243
+ ```ruby
244
+ case AWSConfig.new
245
+ in bucket:, region: "eu-west-1"
246
+ setup_eu_storage(bucket)
247
+ in bucket:, region: "us-east-1"
248
+ setup_us_storage(bucket)
249
+ end
250
+ ```
251
+
252
+ - Add pretty_print support. ([@palkan][])
253
+
254
+ Whenever you use `pp`, the output would contain pretty formatted config information
255
+ including the sources.
256
+
257
+ Example:
258
+
259
+ ```ruby
260
+ pp CoolConfig.new
261
+
262
+ # #<CoolConfig
263
+ # config_name="cool"
264
+ # env_prefix="COOL"
265
+ # values:
266
+ # port => 3334 (type=load),
267
+ # host => "test.host" (type=yml path=./config/cool.yml),
268
+ # user =>
269
+ # name => "john" (type=env key=COOL_USER__NAME),
270
+ # password => "root" (type=yml path=./config/cool.yml)>
271
+ ```
272
+
273
+ - Add source tracing support. ([@palkan][])
274
+
275
+ You can get the information on where a particular parameter value came from
276
+ (which loader) through via `#to_source_trace` method:
277
+
278
+ ```ruby
279
+ conf = MyConfig.new
280
+ conf.to_source_trace
281
+ # {
282
+ # "host" => {value: "test.host", source: {type: :user, called_from: "/rails/root/config/application.rb:21"}},
283
+ # "user" => {
284
+ # "name" => {value: "john", source: {type: :env, key: "COOL_USER__NAME"}},
285
+ # "password" => {value: "root", source: {type: :yml, path: "config/cool.yml"}}
286
+ # },
287
+ # "port" => {value: 9292, source: {type: :defaults}}
288
+ # }
289
+ ```
290
+
291
+ - Change the way Rails configs autoloading works. ([@palkan][])
292
+
293
+ In Rails 6, autoloading before initialization is [deprecated](https://github.com/rails/rails/commit/3e66ba91d511158e22f90ff96b594d61f40eda01). We can still
294
+ make it work by using our own autoloading mechanism (custom Zeitwerk loader).
295
+
296
+ This forces us to use a custom directory (not `app/`) for configs required at the boot time.
297
+ By default, we put _static_ configs into `config/configs` but you can still use `app/configs` for
298
+ _dynamic_ (runtime) configs.
299
+
300
+ **NOTE:** if you used `app/configs` with 2.0.0.preX and relied on configs during initialization,
301
+ you can set static configs path to `app/configs`:
302
+
303
+ ```ruby
304
+ config.anyway_config.autoload_static_config_path = "app/configs"
305
+ ```
306
+
307
+ You can do this by running the generator:
308
+
309
+ ```sh
310
+ rails g anyway:install --configs-path=app/configs
311
+ ```
312
+
313
+ - Add Rails generators. ([@palkan][])
314
+
315
+ You can create config classes with the predefined attributes like this:
316
+
317
+ ```sh
318
+ rails generate config aws access_key_id secret_access_key region
319
+ ```
320
+
321
+ - **BREAKING** The accessors generated by `attr_config` are not longer `attr_accessor`-s. ([@palkan][])
322
+
323
+ You cannot rely on instance variables anymore. Instead, you can use `super` when overriding accessors or
324
+ `values[name]`:
325
+
326
+ ```ruby
327
+ attr_config :host, :port, :url, :meta
328
+
329
+ # override writer to handle type coercion
330
+ def meta=(val)
331
+ super JSON.parse(val)
332
+ end
333
+
334
+ # or override reader to handle missing values
335
+ def url
336
+ values[:url] ||= "#{host}:#{port}"
337
+ end
338
+
339
+ # in <2.1 it's still possible to read instance variables,
340
+ # i.e. the following would also work
341
+ def url
342
+ @url ||= "#{host}:#{port}"
343
+ end
344
+ ```
345
+
346
+ **NOTE**: we still set instance variables in writers (for backward compatibility), but that would
347
+ be removed in 2.1.
348
+
349
+ - Add `Config#dig` method. ([@palkan][])
350
+
351
+ - Add ability to specify types for OptionParser options. ([@palkan][])
352
+
353
+ ```ruby
354
+ describe_options(
355
+ concurrency: {
356
+ desc: "number of threads to use",
357
+ type: String
358
+ }
359
+ )
360
+ ```
361
+
362
+ - Add param presence validation. ([@palkan][])
363
+
364
+ You can specify some params as required, and the validation
365
+ error would be raised if they're missing or empty (only for strings):
366
+
367
+ ```ruby
368
+ class MyConfig < Anyway::Config
369
+ attr_config :api_key, :api_secret, :debug
370
+
371
+ required :api_key, :api_secret
372
+ end
373
+
374
+ MyConfig.new(api_secret: "") #=> raises Anyway::Config::ValidationError
375
+ ```
376
+
377
+ You can change the validation behaviour by overriding the `#validate!` method in your config class.
378
+
379
+ - Validate config attribute names. ([@palkan][])
380
+
381
+ Do not allow using reserved names (`Anyway::Config` method names).
382
+ Allow only alphanumeric names (matching `/^[a-z_]([\w]+)?$/`).
383
+
384
+ - Add Loaders API. ([@palkan][])
385
+
386
+ All config sources have standardized via _loaders_ API. It's possible to define
387
+ custom loaders or change the sources order.
388
+
389
+ ## 2.0.0.pre2 (2019-04-26)
390
+
391
+ - Fix bug with loading from credentials when local credentials are missing. ([@palkan][])
392
+
393
+ ## 2.0.0.pre (2019-04-26)
394
+
395
+ - **BREAKING** Changed the way of providing explicit values. ([@palkan][])
396
+
397
+ ```ruby
398
+ # BEFORE
399
+ Config.new(overrides: data)
400
+
401
+ # AFTER
402
+ Config.new(data)
403
+ ```
404
+
405
+ - Add Railtie. ([@palkan][])
406
+
407
+ `Anyway::Railtie` provides `Anyway::Settings` access via `Rails.applicaiton.configuration.anyway_config`.
408
+
409
+ It also adds `app/configs` path to autoload paths (low-level, `ActiveSupport::Dependencies`) to
410
+ make it possible to use configs in the app configuration files.
411
+
412
+ - Add test helpers. ([@palkan][])
413
+
414
+ Added `with_env` helper to test code in the context of the specified
415
+ environment variables.
416
+
417
+ Included automatically in RSpec for examples with the `type: :config` meta
418
+ or with the `spec/configs` path.
419
+
420
+ - Add support for _local_ files. ([@palkan][])
421
+
422
+ Now users can store their personal configurations in _local_ files:
423
+
424
+ - `<config_name>.local.yml`
425
+ - `config/credentials/local.yml.enc` (for Rails 6).
426
+
427
+ Local configs are meant for using in development and only loaded if
428
+ `Anyway::Settings.use_local_files` is `true` (which is true by default if
429
+ `RACK_ENV` or `RAILS_ENV` env variable is equal to `"development"`).
430
+
431
+ - Add Rails credentials support. ([@palkan][])
432
+
433
+ The data from credentials is loaded after the data from YAML config and secrets,
434
+ but before environmental variables (i.e. env variables are _stronger_)
435
+
436
+ - Update config name inference logic. ([@palkan][])
437
+
438
+ Config name is automatically inferred only if:
439
+
440
+ - the class name has a form of `<Module>::Config` (`SomeModule::Config => "some_module"`)
441
+ - the class name has a form of `<Something>Config` (`SomeConfig => "some"`)
442
+
443
+ - Fix config classes inheritance. ([@palkan][])
444
+
445
+ Previously, inheritance didn't work due to the lack of proper handling of class-level
446
+ configuration (naming, option parses settings, defaults).
447
+
448
+ Now it's possible to extend config classes without breaking the original classes functionality.
449
+
450
+ - **Require Ruby >= 2.5.0.**
451
+
452
+ ## 1.4.3 (2019-02-04)
453
+
454
+ - Add a temporary fix for JRuby regression [#5550](https://github.com/jruby/jruby/issues/5550). ([@palkan][])
455
+
456
+ ## 1.4.2 (2018-01-05)
457
+
458
+ - Fix: detect Rails by presence of `Rails::VERSION` (instead of just `Rails`). ([@palkan][])
459
+
460
+ ## 1.4.1 (2018-10-30)
461
+
462
+ - Add `.flag_options` to mark some params as flags (value-less) for OptionParse. ([@palkan][])
463
+
464
+ ## 1.4.0 (2018-10-29)
465
+
466
+ - Add OptionParse integration ([@jastkand][])
467
+
468
+ See more [PR#18](https://github.com/palkan/anyway_config/pull/18).
469
+
470
+ - Use underscored config name as an env prefix. ([@palkan][])
471
+
472
+ For a config class:
473
+
474
+ ```ruby
475
+ class MyApp < Anyway::Config
476
+ end
477
+ ```
478
+
479
+ Before this change we use `MYAPP_` prefix, now it's `MY_APP_`.
480
+
481
+ You can specify the prefix explicitly:
482
+
483
+ ```ruby
484
+ class MyApp < Anyway::Config
485
+ env_prefix "MYAPP_"
486
+ end
487
+ ```
488
+
489
+ ## 1.3.0 (2018-06-15)
490
+
491
+ - Ruby 2.2 is no longer supported.
492
+
493
+ - `Anyway::Config.env_prefix` method is introduced. ([@charlie-wasp][])
494
+
495
+ ## 1.2.0 (2018-02-19)
496
+
497
+ Now works on JRuby 9.1+.
498
+
499
+ ## 1.1.3 (2017-12-20)
500
+
501
+ - Allow to pass raw hash with explicit values to `Config.new`. ([@dsalahutdinov][])
502
+
503
+ Example:
504
+
505
+ ```ruby
506
+ Sniffer::Config.new(
507
+ overrides: {
508
+ enabled: true,
509
+ storage: {capacity: 500}
510
+ }
511
+ )
512
+ ```
513
+
514
+ See more [PR#10](https://github.com/palkan/anyway_config/pull/10).
515
+
516
+ ## 1.1.2 (2017-11-19)
517
+
518
+ - Enable aliases for YAML. ([@onemanstartup][])
519
+
520
+ ## 1.1.1 (2017-10-21)
521
+
522
+ - Return deep duplicate of a Hash in `Env#fetch`. ([@palkan][])
523
+
524
+ ## 1.1.0 (2017-10-06)
525
+
526
+ - Add `#to_h` method. ([@palkan][])
527
+
528
+ See [#4](https://github.com/palkan/anyway_config/issues/4).
529
+
530
+ - Make it possible to extend configuration parameters. ([@palkan][])
531
+
532
+ ## 1.0.0 (2017-06-20)
533
+
534
+ - Lazy load and parse ENV configuration. ([@palkan][])
535
+
536
+ - Add support for ERB in YML configuration. ([@palkan][])
537
+
538
+ ## 0.5.0 (2017-01-20)
539
+
540
+ - Drop `active_support` dependency. ([@palkan][])
541
+
542
+ Use custom refinements instead of requiring `active_support`.
543
+
544
+ No we're dependency-free!
545
+
546
+ ## 0.1.0 (2015-01-20)
547
+
548
+ - Initial version.
549
+
550
+ [@palkan]: https://github.com/palkan
551
+ [@onemanstartup]: https://github.com/onemanstartup
552
+ [@dsalahutdinov]: https://github.com/dsalahutdinov
553
+ [@charlie-wasp]: https://github.com/charlie-wasp
554
+ [@jastkand]: https://github.com/jastkand
555
+ [@envek]: https://github.com/Envek
556
+ [@progapandist]: https://github.com/progapandist
557
+ [@skryukov]: https://github.com/skryukov
558
+ [@fargelus]: https://github.com/fargelus
559
+ [@prog-supdex]: https://github.com/prog-supdex
560
+ [@inner-whisper]: https://github.com/inner-whisper
561
+ [@tagirahmad]: https://github.com/tagirahmad
562
+ [@bessey]: https://github.com/bessey
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015-2020 Vladimir Dementyev
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.