hub_kernel-interface 0.7.0 → 0.9.0
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 +4 -4
- data/README.md +17 -2
- data/lib/hub_kernel/interface/hub_kernel_release.rb +15 -0
- data/lib/hub_kernel/interface/version.rb +1 -1
- data/lib/hub_kernel/interface.rb +5 -1
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: aa94379e01e0ee039f41a4781b67f39ad4ad030ec77f0b4782f7c567b74a8002
|
|
4
|
+
data.tar.gz: 3b589b03f7b4ebe8d853943297e617aa9179d00fc53d3c0bd46ee428e3f5ca5a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0c4701fdf78fe037fdaf67ac3694ba07ff7d1c6d7bf4479bded9f131f56a886876feba0334cf89a6328da5604a621bec573261d9ff31d6e4b18a5850909d9e6f
|
|
7
|
+
data.tar.gz: d087e461324a72ac89c1262dd9bae5d84abde0af484a2c894b38b72bb7f8063c604a30a93d8b44947d9b6b83686b95373e196aa2bc725b76ef89318c943c9826
|
data/README.md
CHANGED
|
@@ -40,9 +40,11 @@ for a missing person, account or required value. A hub refuses with `HubKernel::
|
|
|
40
40
|
reason a person can read. A call made while the permission check or the account scope is unset
|
|
41
41
|
raises `HubKernel::UnwiredPortError`.
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
Every interface serves every hub that exposes a method, each at its module name in snake
|
|
44
|
+
case, unless the host names the hubs to serve, once. A hub listed alone is served at its
|
|
44
45
|
module name in snake case, and a hub listed as a one-pair hash is served only at the name
|
|
45
|
-
given.
|
|
46
|
+
given. Setting the list to `nil` serves every exposing hub again. An interface gem finds the
|
|
47
|
+
hub served at a name, or `nil` when none is:
|
|
46
48
|
|
|
47
49
|
```ruby
|
|
48
50
|
HubKernel::Interface.hubs = [ Supplies, { "money" => Billing::Ledger } ]
|
|
@@ -55,6 +57,14 @@ HubKernel::Interface.served # => { "supplies" => Supplies, "money" =>
|
|
|
55
57
|
The permission check is still asked about a hub served under a chosen name by its own name,
|
|
56
58
|
such as `ledger:record_spend`.
|
|
57
59
|
|
|
60
|
+
The host names the methods that give the calling person and account once, here, for an
|
|
61
|
+
interface gem to read:
|
|
62
|
+
|
|
63
|
+
```ruby
|
|
64
|
+
HubKernel::Interface.person_method = :hub_person
|
|
65
|
+
HubKernel::Interface.account_method = :hub_account
|
|
66
|
+
```
|
|
67
|
+
|
|
58
68
|
An interface gem's boot check runs `HubKernel::Interface.check!`, which raises
|
|
59
69
|
`HubKernel::Interface::UnservableHubError` naming every problem in the served list at once:
|
|
60
70
|
an entry that exposes no methods, two entries that answer at the same name, and each
|
|
@@ -86,6 +96,11 @@ declares an exposed method.
|
|
|
86
96
|
gem "hub_kernel-interface"
|
|
87
97
|
```
|
|
88
98
|
|
|
99
|
+
hub_kernel releases before 0.19.0 define this contract themselves. Loading hub_kernel-interface
|
|
100
|
+
beside one raises `HubKernel::Interface::OlderHubKernelError`, which names the hub_kernel
|
|
101
|
+
release to upgrade to. An app with no hub_kernel, or with hub_kernel 0.19.0 or later, loads it
|
|
102
|
+
as usual.
|
|
103
|
+
|
|
89
104
|
## License
|
|
90
105
|
|
|
91
106
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module HubKernel
|
|
2
|
+
module Interface
|
|
3
|
+
class OlderHubKernelError < StandardError; end
|
|
4
|
+
|
|
5
|
+
module HubKernelRelease
|
|
6
|
+
FIRST_BUILT_ON_INTERFACE = Gem::Version.new("0.19.0")
|
|
7
|
+
|
|
8
|
+
def self.refuse_older!(spec)
|
|
9
|
+
return if spec.nil? || spec.version >= FIRST_BUILT_ON_INTERFACE
|
|
10
|
+
|
|
11
|
+
raise OlderHubKernelError, "hub_kernel #{spec.version} still defines the contract hub_kernel-interface holds, so upgrade hub_kernel to #{FIRST_BUILT_ON_INTERFACE} or later"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
data/lib/hub_kernel/interface.rb
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
require "hub_kernel/interface/version"
|
|
2
|
+
require "hub_kernel/interface/hub_kernel_release"
|
|
3
|
+
HubKernel::Interface::HubKernelRelease.refuse_older!(Gem.loaded_specs["hub_kernel"])
|
|
2
4
|
require "hub_kernel/exposes"
|
|
5
|
+
require "hub_kernel/interface/exposing_hubs"
|
|
3
6
|
require "hub_kernel/interface/call_reasons"
|
|
4
7
|
|
|
5
8
|
module HubKernel
|
|
@@ -7,8 +10,9 @@ module HubKernel
|
|
|
7
10
|
class UnservableHubError < StandardError; end
|
|
8
11
|
|
|
9
12
|
singleton_class.attr_writer :hubs
|
|
13
|
+
singleton_class.attr_accessor :person_method, :account_method
|
|
10
14
|
|
|
11
|
-
def self.hubs = @hubs
|
|
15
|
+
def self.hubs = @hubs || ExposingHubs.list.dup
|
|
12
16
|
|
|
13
17
|
def self.find(name) = served[name]
|
|
14
18
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: hub_kernel-interface
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.9.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- tylercschneider
|
|
@@ -42,6 +42,7 @@ files:
|
|
|
42
42
|
- lib/hub_kernel/interface.rb
|
|
43
43
|
- lib/hub_kernel/interface/call_reasons.rb
|
|
44
44
|
- lib/hub_kernel/interface/exposing_hubs.rb
|
|
45
|
+
- lib/hub_kernel/interface/hub_kernel_release.rb
|
|
45
46
|
- lib/hub_kernel/interface/version.rb
|
|
46
47
|
- the_local/agents/hub_kernel-interface-develop.md
|
|
47
48
|
- the_local/agents/hub_kernel-interface-info.md
|