navigable 1.0.2 → 1.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b96bb3ac3fd1a2e93eaaa1517c7bf890065f9ee803f4e20269bf96fcaea7f78f
4
- data.tar.gz: 3e08676aef87c9340af3b58e0b8124221e17a7ced004813dddd8f9377d9da9e0
3
+ metadata.gz: a9a68f7f5e2ac4de908f84bdf0ead1bcddf8b07117a05cdf21ce228aad4609fb
4
+ data.tar.gz: 1031b1dcc22fc53c37d9c2dde8049941e4aca4a9b975d4646242c8bc50dbc880
5
5
  SHA512:
6
- metadata.gz: 689df880596033ed27ef92716554f2534a12a43b5d6c54a100eb363d8b3a57eed6ed356d77fbbcfddcf2ffc6509c6e866b0d6365ba27b9ecd908216b4d6b9322
7
- data.tar.gz: 298e1239bfd0cf6e7050766173dfee8cbae94af0cf2994e2d4bb0b7a318f3303da09878c55c45dcffff1356a8a3d69072154bb9bd8d81b17219bae42090224f0
6
+ metadata.gz: 718b7b78861540d93c40df11f422a62fe11fd5c55dc1e007df7c556d4a1105201b177f7b804e775c6f5e0d4e58429b96ac35881b8016cc2aa79cc062c43f5d5e
7
+ data.tar.gz: 9fe59b3b53a9dcf2653ccd34b1ae15449ebb0af35e6ae12eef9c1637f9e197f7df5a3bbe4f5f3118a185cd79eaf18871ef5d577a296d5979166b13c8d3b5c0b7
data/.gitignore CHANGED
@@ -13,5 +13,6 @@
13
13
  # rspec failure tracking
14
14
  .rspec_status
15
15
 
16
+ .DS_Store
16
17
  Gemfile.lock
17
18
 
data/README.md CHANGED
@@ -11,17 +11,26 @@ Navigable is a family of gems that together provide all the tools you need to bu
11
11
  <td width="130"><img alt="Clipper Ship" src="https://raw.githubusercontent.com/first-try-software/navigable/main/assets/clipper.png"></td>
12
12
  <td>
13
13
 
14
- **Navigable**<br>
14
+ **[Navigable][navigable]**<br>
15
15
  A stand-alone tool for isolating business logic from external interfaces and cross-cutting concerns. Navigable composes self-configured command and observer objects to allow you to extend your business logic without modifying it. Navigable is compatible with any Ruby-based application development framework, including Rails, Hanami, and Sinatra.
16
16
 
17
+ </td>
18
+ </tr>
19
+ <tr height="140">
20
+ <td width="130"><img alt="Compass" src="https://raw.githubusercontent.com/first-try-software/navigable/main/assets/sextant.png"></td>
21
+ <td>
22
+
23
+ **[Navigable Router][router]** *(coming soon)*<br>
24
+ A simple, highly-performant, Rack-based router.
25
+
17
26
  </td>
18
27
  </tr>
19
28
  <tr height="140">
20
29
  <td width="130"><img alt="Compass" src="https://raw.githubusercontent.com/first-try-software/navigable/main/assets/compass.png"></td>
21
30
  <td>
22
31
 
23
- **Navigable Server** *(coming soon)*<br>
24
- A Rack-based web server for building Navigable-backed applications.
32
+ **[Navigable Server][server]** *(coming soon)*<br>
33
+ A Rack-based server for building Ruby and Navigable web applications.
25
34
 
26
35
  </td>
27
36
  </tr>
@@ -49,8 +58,6 @@ An extension of Navigable Server for building GraphQL APIs.
49
58
 
50
59
  <img style="width: 600px; display: block; margin: 0 auto;" alt="Lighthouse" src="https://raw.githubusercontent.com/first-try-software/navigable/main/assets/lighthouse.png">
51
60
 
52
- <br>
53
-
54
61
  # The Navigable Charter
55
62
 
56
63
  We hold these truths to be self-evident, that not all objects are created equal, that poorly structured code leads to poorly tested code, and that poorly tested code leads to rigid software and fearful engineers.
@@ -164,11 +171,13 @@ Here are a few things to look for in the code above:
164
171
 
165
172
  * Use the `observes_all_commands` statement (as shown in the `Monitor` class) for cross-cutting concerns. It tells Navigable to send messages to the observer no matter which command was executed.
166
173
 
174
+ For a deeper look at the core concepts introduced by Navigable, please have a look at our [wiki][wiki].
175
+
167
176
  ## Feedback
168
177
 
169
178
  We are really excited about Navigable! We think it solves the problem of seperating business logic from the web interface, persistence layer, and even cross-cutting concerns in an elegant and simple way.
170
179
 
171
- We sincerely hope you'll download Navigable and play with it! If you do, please send us a note to [navigable@firsttry.software][mail] to give us your thoughts!
180
+ We're thrilled you're checking out Navigable! If you have any questions or comments, please feel free to reach out to [navigable@firsttry.software][mail].
172
181
 
173
182
  ## Installation
174
183
 
@@ -210,3 +219,7 @@ Everyone interacting in the Navigable project's codebases, issue trackers, chat
210
219
  [ocp]: https://en.wikipedia.org/wiki/Open–closed_principle
211
220
  [ddd]: https://en.wikipedia.org/wiki/Domain-driven_design
212
221
  [mail]: mailto:navigable@firsttry.software
222
+ [wiki]: https://github.com/first-try-software/navigable/wiki
223
+ [navigable]: https://github.com/first-try-software/navigable
224
+ [router]: https://github.com/first-try-software/navigable-router
225
+ [server]: https://github.com/first-try-software/navigable-server
@@ -20,7 +20,7 @@ module Navigable
20
20
  base.class_eval do
21
21
  attr_reader :params, :observers
22
22
 
23
- def initialize(params: {}, observers: [])
23
+ def inject(params: {}, observers: [])
24
24
  @params = params
25
25
  @observers = observers
26
26
  end
@@ -25,11 +25,11 @@ module Navigable
25
25
  end
26
26
 
27
27
  def observers
28
- Manufacturable.build_all(Observer::TYPE, key, params: params).push(resolver)
28
+ Manufacturable.build_all(Observer::TYPE, key) { |observer| observer.inject(params: params) }.push(resolver)
29
29
  end
30
30
 
31
31
  def command
32
- Manufacturable.build_one(Command::TYPE, key, params: params, observers: observers)
32
+ Manufacturable.build_one(Command::TYPE, key) { |command| command.inject(params: params, observers: observers) }
33
33
  end
34
34
  end
35
35
  end
@@ -23,7 +23,7 @@ module Navigable
23
23
  base.class_eval do
24
24
  attr_reader :params
25
25
 
26
- def initialize(params: {})
26
+ def inject(params: {})
27
27
  @params = params
28
28
  end
29
29
 
@@ -1,5 +1,5 @@
1
1
  # frozen-string-literal: true
2
2
 
3
3
  module Navigable
4
- VERSION = "1.0.2"
4
+ VERSION = "1.1.0"
5
5
  end
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
25
  spec.require_paths = ["lib"]
26
26
 
27
- spec.add_dependency "manufacturable", "~> 1.4"
27
+ spec.add_dependency "manufacturable", "~> 1.5"
28
28
 
29
29
  spec.add_development_dependency "bundler", "~> 2.0"
30
30
  spec.add_development_dependency "rake", "~> 12.0"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: navigable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alan Ridlehoover
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-09-17 00:00:00.000000000 Z
12
+ date: 2020-09-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: manufacturable
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '1.4'
20
+ version: '1.5'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '1.4'
27
+ version: '1.5'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: bundler
30
30
  requirement: !ruby/object:Gem::Requirement