skn_utils 5.1.2 → 5.1.3

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
  SHA1:
3
- metadata.gz: '090c4c00d9e44ae01b59c322e713f83b8f55d9c8'
4
- data.tar.gz: 0d518e1ba1b7c1d2c6863823da2f70c5ea47b3cc
3
+ metadata.gz: ab0d406a18ec9195e66f548bf411ac0180f3c5e9
4
+ data.tar.gz: 940e9429c70622331c953c03029b31f1af5cae27
5
5
  SHA512:
6
- metadata.gz: bc9984b808ca93aff1e15a601f5471307ce01e21dc66299dbdde992a8bdb759bed67ec1ddcadcd0eb693de430ebc634bfaf2ea3c5d6f30f42fd54819df7c5106
7
- data.tar.gz: 0ac31c49c966eabf65d0e88372627e6b0deb55c07cf1e38fc931042b8a1a570e5050ab9b8603bb94d791b1607e185fd4a12723e074041c59fe814244cc811e14
6
+ metadata.gz: 62c4dd21348287fb7503b4b30ca15443ca2b1bfe188f9b4e89b22c520e45fde18008b2f3c08df1d505ee6e287a806df14abaaf6e382467e586f7ba8309d66af9
7
+ data.tar.gz: a0821fe5d46bd2bb5cefa7829a77b0081383691fdd4ac0c75a9012294d34803da742c7ac1aacc8594b4b86a17c6a21e5d957c80ac0eb9d5f314755985a8286ec
data/README.md CHANGED
@@ -27,7 +27,7 @@ Ruby's Hash object is already extremely flexible, even more so with the addition
27
27
  - enables `SknSettings.env.production?` ...
28
28
  1. Since SknSettings is by necessity a global constant, it can serve as Session Storage to keep system objects; like a ROM-RB instance.
29
29
  1. In-Memory Key-Store, use it to cache active user objects, or active Integration passwords, and/or objects that are not serializable.
30
- 1. Command registries used to displatch command requests to proper command handler. see example app [SknBase](https://github.com/skoona/skn_base/blob/master/strategy/services/content/command_handler.rb)
30
+ 1. Command registries used to dispatch command requests to proper command handler. see example app [SknBase](https://github.com/skoona/skn_base/blob/master/strategy/services/content/command_handler.rb)
31
31
  ```ruby
32
32
  SknSettings.registry = {
33
33
  Services::Content::Commands::RetrieveAvailableResources => method(:resources_metadata_service),
@@ -60,6 +60,10 @@ There are many more use cases for Ruby's Hash that this gem just makes easier to
60
60
 
61
61
 
62
62
  ## History
63
+ 10/17/2018 V5.1.3
64
+ Enhanced SknUtils::Configurable to include a #registry method/value at its root, like Clas.registry or Class.root
65
+ - Right now these are Class methods only, will update them to survive #new later.
66
+
63
67
  10/15/2018 V5.1.1
64
68
  Enhanced SknSettings to match 95% of the (Rb)Config.gem public API.
65
69
 
@@ -143,7 +147,7 @@ There are many more use cases for Ruby's Hash that this gem just makes easier to
143
147
  SknUtils::PageControls # Wrapper for name only, inherits from SknUtils::NestedResult
144
148
  SknUtils::DottedHash # Wrapper for name only, inherits from SknUtils::NestedResult
145
149
 
146
- SknUtils::Configurable # Basic one-level configuration Applications classes or modules. Adds MyClass.root,MyClass.env, and MyClass.logger, with MyClass.config.<user_attrs>
150
+ SknUtils::Configurable # Basic one-level class configuration Module
147
151
 
148
152
  SknSettings # Multi-level application Configuration class, Key/Value Container with Dot/Hash notiation support.
149
153
 
@@ -153,8 +157,66 @@ There are many more use cases for Ruby's Hash that this gem just makes easier to
153
157
  SknFailure # Three attribute value containers for return codes -- #success, #message, #value
154
158
 
155
159
 
156
- ## Configuration Options
157
- None required
160
+ ## Public Methods: SknUtils::Configurable module
161
+ For making an arbitrary class configurable and then specifying those configuration values using a clean and simple DSL.
162
+ ```ruby
163
+ ################
164
+ Inside Target component
165
+ ################
166
+ class MyApp
167
+ include SknUtils::Configurable.with(:app_id, :title, :cookie_name) # or {root_enable: false})
168
+ # ... default=true for root|env|logger
169
+ end
170
+
171
+ ################
172
+ Inside Initializer
173
+ ################
174
+ MyApp.configure do
175
+ app_id "my_app"
176
+ title "My App"
177
+ cookie_name { "#{app_id}_session" }
178
+ end
179
+
180
+ ################
181
+ During Definition
182
+ ################
183
+ class MyApp
184
+ include SknUtils::Configurable.with(:app_id, :title, :cookie_name, {root_enable: true})
185
+ # ...
186
+ configure do
187
+ app_id "my_app"
188
+ title "My App"
189
+ cookie_name { "#{app_id}_session" }
190
+ end
191
+
192
+ self.logger = Logger.new
193
+ self.env = ENV.fetch('RACK_ENV', 'development')
194
+ self.root = Dir.pwd
195
+ end
196
+
197
+ ################
198
+ Usage:
199
+ ################
200
+ MyApp.config.app_id # ==> "my_app"
201
+ MyApp.logger # ==> <Logger.class>
202
+ MyApp.registry # ==> <SknRegistry.instance> or user assigned object
203
+ MyApp.env.test? # ==> true
204
+
205
+ ###############
206
+ Syntax
207
+ ###############
208
+ Main Class Attrs
209
+ - root = application rood directory as Pathname
210
+ - env = string value from RACK_ENV
211
+ - registry = SknRegistry instance
212
+ - logger = Assigned Logger instance
213
+ #with(*user_attrs, enable_root: true|false) - defaults to enable of Main Class Attrs
214
+
215
+ # ##
216
+ # User-Defined Attrs
217
+ # ##
218
+ MyThing.with(:name1, :name2, ...)
219
+ ```
158
220
 
159
221
 
160
222
  ## Public Methods: SknContainer ONLY
@@ -37,8 +37,8 @@ module SknUtils
37
37
  # end
38
38
  #
39
39
  # self.logger = Logger.new
40
- # self.env = ENV.fetch('RACK_ENV', 'development')
41
- # self.root = Dir.pwd
40
+ # self.env = ENV.fetch('RACK_ENV', 'development')
41
+ # self.root = Dir.pwd
42
42
  # end
43
43
  #
44
44
  #################
@@ -52,9 +52,10 @@ module SknUtils
52
52
  # Syntax
53
53
  # ###############
54
54
  # Main Class Attrs
55
- # - root = application rood directory as Pathname
56
- # - env = string value from RACK_ENV
57
- # - logger = Assiigned Logger instance
55
+ # - root = application rood directory as Pathname
56
+ # - env = string value from RACK_ENV
57
+ # - registry = SknRegistry instance
58
+ # - logger = Assigned Logger instance
58
59
  # #with(*user_attrs, enable_root: true|false) - defaults to enable of Main Class Attrs
59
60
  # ##
60
61
  # User-Defined Attrs
@@ -103,6 +104,12 @@ module SknUtils
103
104
  if _app_main
104
105
  # Enable Rails<Like>.env and Rails.logger like feature:
105
106
  # - MyClass.env.production? or MyClass.logger or MyClass.root
107
+ def registry
108
+ @__registry ||= ::SknRegistry.new
109
+ end
110
+ def registry=(obj_instance)
111
+ @__registry = obj_instance
112
+ end
106
113
  def env
107
114
  @__env ||= ::SknUtils::EnvStringHandler.new( ENV.fetch('RACK_ENV', 'development') )
108
115
  end
@@ -3,7 +3,7 @@ module SknUtils
3
3
  class Version
4
4
  MAJOR = 5
5
5
  MINOR = 1
6
- PATCH = 2
6
+ PATCH = 3
7
7
 
8
8
  def self.to_s
9
9
  [MAJOR, MINOR, PATCH].join('.')
@@ -4,10 +4,11 @@
4
4
 
5
5
  class MyApp
6
6
  include SknUtils::Configurable.with( :app_id, :title, :cookie_name, enable_root: true) # No options hash defaults to true
7
- # - and accept defaults for #env=, #root=, and #logger=
7
+ # - and accept defaults for #env=, #root=, #registry=, and #logger=
8
8
 
9
9
  # notice: self.logger=, the self is required when assigning values
10
10
  self.logger = Object.new
11
+ self.registry = Object.new
11
12
 
12
13
  configure do
13
14
  app_id 'some app'
@@ -50,6 +51,9 @@ describe SknUtils::Configurable, "Gem Configuration module." do
50
51
  it "MyApp.logger returns expected value. " do
51
52
  expect( MyApp.logger ).to be_instance_of(Object) # eq('No Logger Assigned.')
52
53
  end
54
+ it "MyApp.registry returns expected value. " do
55
+ expect( MyApp.registry ).to be_instance_of(Object)
56
+ end
53
57
  end
54
58
 
55
59
  context "Module & Class Operational Features. " do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: skn_utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.2
4
+ version: 5.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Scott Jr