nxt_config 0.2.0 → 0.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b54a945863c828c3a6f04f8c7e2c220b6fb877b42ffb3e7011ad1af98bdbb5c
4
- data.tar.gz: 858083ef8180ca162cebf589f6eddfe58b41828702a8373677f9f707dd759720
3
+ metadata.gz: 3d8967fb731cfbb8388f8f72b4111137b1a65f59e597982d43e86f9da0280d89
4
+ data.tar.gz: b111ac2f900a61e4361c0475fb9cc2d85a55e12a78764b5fef04baf948d06821
5
5
  SHA512:
6
- metadata.gz: cfeafb100eb0585ca72806a956f5edd7894faa78a9f924debb2b2aae891bab40ee620be470ce9e87393c7ebdbb033b88c82f39b51711d0509686ec65c1d8bc10
7
- data.tar.gz: 749ac16ca1fe736f6208eb9a37670c08ba2b51b0c8b6370c2ddaa343b481e9d22c9a4c8699ea2c1853dffdeb33577b1fb8a11b6ca9ff3cb8d4f7d27a3d15970e
6
+ metadata.gz: 9cc788737cce9c3addc730d6f6999b536b1d9cd2fe0d53a3c75f6ced49e3195fc622300486ee70c6942385c6b16971e08615858c8ab6c8abaa0312a7c410321a
7
+ data.tar.gz: 2e44b14680acb33d9bb9585dc563d8536ddf131842b66963e8e3a6fe6c4227a9c8a48a1206f68fd857ca6ca9a7d3864629e269bb7758939496a965144d8fdac8
data/CHANGELOG.md ADDED
@@ -0,0 +1,28 @@
1
+ # v0.2.1 2019-01-11
2
+
3
+ ### Added
4
+
5
+ - [internal] Added [guard](https://github.com/guard/guard) to run specs automatically upon file changes.
6
+
7
+ ### Changes
8
+
9
+ - [internal] Removed [activesupport](https://github.com/rails/rails/tree/master/activesupport) as a dependency.
10
+
11
+ [Compare v0.2.0...v0.2.1](https://github.com/nxt-insurance/nxt_config/compare/v0.2.0...v0.2.1)
12
+
13
+ # v0.2.0 2019-01-08
14
+
15
+ ### Added
16
+
17
+ - Added the `#fetch` method to `NxtConfig::Struct`.
18
+
19
+ ### Changed
20
+
21
+ - Removed the `#[]` method from `NxtConfig::Struct` (BREAKING).
22
+ - Replaced `NxtConfig::load_and_constantize` with `NxtConfig::load` and changed the way configs are assigned to constants.
23
+
24
+ [Compare v0.1.0...v0.2.0](https://github.com/nxt-insurance/nxt_config/compare/v0.1.0...v0.2.0)
25
+
26
+ # v0.1.0 2019-01-04
27
+
28
+ Initial release.
data/Gemfile CHANGED
@@ -3,9 +3,13 @@ source "https://rubygems.org"
3
3
  # Specify your gem's dependencies in nxt_config.gemspec
4
4
  gemspec
5
5
 
6
- gem "rake", "~> 12.0"
7
- gem "rspec", "~> 3.0"
6
+ gem "rake"
7
+ gem "rspec"
8
+
9
+ group :development do
10
+ gem "guard-rspec", require: false
11
+ end
8
12
 
9
13
  group :test do
10
- gem 'rspec_junit_formatter' # for CircleCI
14
+ gem "rspec_junit_formatter" # for CircleCI
11
15
  end
data/Gemfile.lock CHANGED
@@ -1,24 +1,45 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nxt_config (0.2.0)
5
- activesupport
4
+ nxt_config (0.2.1)
6
5
 
7
6
  GEM
8
7
  remote: https://rubygems.org/
9
8
  specs:
10
- activesupport (6.0.2.1)
11
- concurrent-ruby (~> 1.0, >= 1.0.2)
12
- i18n (>= 0.7, < 2)
13
- minitest (~> 5.1)
14
- tzinfo (~> 1.1)
15
- zeitwerk (~> 2.2)
16
- concurrent-ruby (1.1.5)
9
+ coderay (1.1.2)
17
10
  diff-lcs (1.3)
18
- i18n (1.7.1)
19
- concurrent-ruby (~> 1.0)
20
- minitest (5.13.0)
21
- rake (12.3.3)
11
+ ffi (1.11.3)
12
+ formatador (0.2.5)
13
+ guard (2.16.1)
14
+ formatador (>= 0.2.4)
15
+ listen (>= 2.7, < 4.0)
16
+ lumberjack (>= 1.0.12, < 2.0)
17
+ nenv (~> 0.1)
18
+ notiffany (~> 0.0)
19
+ pry (>= 0.9.12)
20
+ shellany (~> 0.0)
21
+ thor (>= 0.18.1)
22
+ guard-compat (1.2.1)
23
+ guard-rspec (4.7.3)
24
+ guard (~> 2.1)
25
+ guard-compat (~> 1.1)
26
+ rspec (>= 2.99.0, < 4.0)
27
+ listen (3.2.1)
28
+ rb-fsevent (~> 0.10, >= 0.10.3)
29
+ rb-inotify (~> 0.9, >= 0.9.10)
30
+ lumberjack (1.1.1)
31
+ method_source (0.9.2)
32
+ nenv (0.3.0)
33
+ notiffany (0.1.3)
34
+ nenv (~> 0.1)
35
+ shellany (~> 0.0)
36
+ pry (0.12.2)
37
+ coderay (~> 1.1.0)
38
+ method_source (~> 0.9.0)
39
+ rake (13.0.1)
40
+ rb-fsevent (0.10.3)
41
+ rb-inotify (0.10.1)
42
+ ffi (~> 1.0)
22
43
  rspec (3.9.0)
23
44
  rspec-core (~> 3.9.0)
24
45
  rspec-expectations (~> 3.9.0)
@@ -34,18 +55,17 @@ GEM
34
55
  rspec-support (3.9.2)
35
56
  rspec_junit_formatter (0.4.1)
36
57
  rspec-core (>= 2, < 4, != 2.12.0)
37
- thread_safe (0.3.6)
38
- tzinfo (1.2.6)
39
- thread_safe (~> 0.1)
40
- zeitwerk (2.2.2)
58
+ shellany (0.0.1)
59
+ thor (1.0.1)
41
60
 
42
61
  PLATFORMS
43
62
  ruby
44
63
 
45
64
  DEPENDENCIES
65
+ guard-rspec
46
66
  nxt_config!
47
- rake (~> 12.0)
48
- rspec (~> 3.0)
67
+ rake
68
+ rspec
49
69
  rspec_junit_formatter
50
70
 
51
71
  BUNDLED WITH
data/Guardfile ADDED
@@ -0,0 +1,31 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ ## Uncomment and set this to only include directories you want to watch
5
+ # directories %w(app lib config test spec features) \
6
+ # .select{|d| Dir.exist?(d) ? d : UI.warning("Directory #{d} does not exist")}
7
+
8
+ ## Note: if you are using the `directories` clause above and you are not
9
+ ## watching the project directory ('.'), then you will want to move
10
+ ## the Guardfile to a watched dir and symlink it back, e.g.
11
+ #
12
+ # $ mkdir config
13
+ # $ mv Guardfile config/
14
+ # $ ln -s config/Guardfile .
15
+ #
16
+ # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
17
+
18
+ # Note: The cmd option is now required due to the increasing number of ways
19
+ # rspec may be run, below are examples of the most common uses.
20
+ # * bundler: 'bundle exec rspec'
21
+ # * bundler binstubs: 'bin/rspec'
22
+ # * spring: 'bin/rspec' (This will use spring if running and you have
23
+ # installed the spring binstubs per the docs)
24
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
25
+ # * 'just' rspec: 'rspec'
26
+
27
+ guard :rspec, cmd: "bundle exec rspec" do
28
+ watch(%r{^spec/.+_spec\.rb$})
29
+ watch(%r{^lib/nxt_pipeline/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
30
+ watch("spec/spec_helper.rb") { "spec" }
31
+ end
data/README.md CHANGED
@@ -7,7 +7,7 @@ This is a very simple tool to load YAML files into strict configuration structs,
7
7
  * Load the content of a YAML file as a configuration object
8
8
  * Strict attribute accessors
9
9
  * Infinite amount of YAML files/configuration objects loadable (not just one)
10
- * Configuration objects can be registered in a given namespace (especially useful when in use in ruby gems loaded by other applications)
10
+ * Configuration objects can be registered in a given namespace (especially useful when in use in ruby gems loaded by other applications) by calling `NxtConfig::load` in the namespace where the constant lives that its config struct is assigned to.
11
11
 
12
12
  ## Installation
13
13
 
@@ -66,10 +66,12 @@ MyRailsApp::ExternalApiConfig.http
66
66
 
67
67
  ## Development
68
68
 
69
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
69
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/rspec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
70
70
 
71
71
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
72
72
 
73
+ Run `bin/guard` for [guard](https://github.com/guard/guard) to start watching for file changes and running the corresponding specs accordingly.
74
+
73
75
  ## Contributing
74
76
 
75
77
  Bug reports and pull requests are welcome on GitHub at https://github.com/nxt-insurance/nxt_config.
data/bin/guard ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'guard' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("guard", "guard")
@@ -1,7 +1,7 @@
1
1
  module NxtConfig
2
2
  class Struct
3
3
  def initialize(hash)
4
- @hash = hash.with_indifferent_access
4
+ @hash = hash.transform_keys(&:to_sym)
5
5
  define_key_accessor_methods
6
6
  hash.freeze
7
7
  end
@@ -10,9 +10,9 @@ module NxtConfig
10
10
  if keys.length == 0
11
11
  raise ArgumentError, "Provide at least one key"
12
12
  elsif keys.length == 1
13
- hash.fetch(keys.first, &block)
13
+ hash.fetch(keys.first.to_sym, &block)
14
14
  else
15
- hash.fetch(keys.first, &block).fetch(*keys[1..-1], &block)
15
+ hash.fetch(keys.first.to_sym, &block).fetch(*keys[1..-1], &block)
16
16
  end
17
17
  end
18
18
 
@@ -27,8 +27,8 @@ module NxtConfig
27
27
  end
28
28
 
29
29
  def transform_hash_value(value)
30
- if value.is_a?(ActiveSupport::HashWithIndifferentAccess) || value.is_a?(Hash)
31
- Struct.new(value)
30
+ if value.is_a?(Hash)
31
+ Struct.new(value.transform_keys(&:to_sym))
32
32
  elsif value.is_a?(Array)
33
33
  value.map { |item| transform_hash_value(item) }
34
34
  else
@@ -1,3 +1,3 @@
1
1
  module NxtConfig
2
- VERSION = "0.2.0".freeze
2
+ VERSION = "0.2.1".freeze
3
3
  end
data/lib/nxt_config.rb CHANGED
@@ -1,4 +1,3 @@
1
- require "active_support/all"
2
1
  require "erb"
3
2
  require "yaml"
4
3
 
data/nxt_config.gemspec CHANGED
@@ -25,6 +25,4 @@ Gem::Specification.new do |spec|
25
25
  spec.bindir = "exe"
26
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ["lib"]
28
-
29
- spec.add_dependency "activesupport"
30
28
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nxt_config
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nils Sommer
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-08 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: activesupport
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
11
+ date: 2020-01-11 00:00:00.000000000 Z
12
+ dependencies: []
27
13
  description: Create namespaced, immutable objects serving configuration properties
28
14
  to your ruby application.
29
15
  email:
@@ -37,12 +23,15 @@ files:
37
23
  - ".gitignore"
38
24
  - ".rspec"
39
25
  - ".ruby-version"
26
+ - CHANGELOG.md
40
27
  - Gemfile
41
28
  - Gemfile.lock
29
+ - Guardfile
42
30
  - LICENSE.txt
43
31
  - README.md
44
32
  - Rakefile
45
33
  - bin/console
34
+ - bin/guard
46
35
  - bin/rspec
47
36
  - bin/setup
48
37
  - lib/nxt_config.rb