low_loop 0.5.1 → 0.6.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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/low_loop.rb +19 -2
  3. data/lib/version.rb +1 -1
  4. metadata +16 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a937739ee77aedaaf4bce063e88be4dc25d144d23900f58741ed6b1f9b816aba
4
- data.tar.gz: f5fa4e2e8943cf9c65811df974ed16f1acc9da21bed14601fd6fbd8b940ac4c7
3
+ metadata.gz: 4006b144aa2ea5ef16ac6bb4466f2747131009e3f9abc5585536aa24211cea01
4
+ data.tar.gz: 6765a91b3248cbebadd66a1ef9cd1b03dc80cd06e20fe82f13113c3b07220392
5
5
  SHA512:
6
- metadata.gz: ff08f0065bf92482f735e28f80c958c456d1b55cd46e5eed62c5c65530ad91198347f33265d966b050ade553305282fd75c8b45482d4ac456ebdeb83f9af43bb
7
- data.tar.gz: b809fe7e750c258e7758c8360b0f0164965903cf3a565821b11e90801ad77d3adf7c9727211ddb085b68ec2ba6b55b09e0829d8ada3906f169ae16d5542be978
6
+ metadata.gz: 3520d75248f84b97e04c253e31ca8fc39ac90702cca790992332123d3b8325a6d3e7a033115a908cf77ae0b9c5ebe6a6f6644fe0c93f5b0a3e9d3f78164c5f3f
7
+ data.tar.gz: a2d759c20c4f75e474b6f788e327b64e8249ae4560cabb12eeb0c2673216ac8736fe12cad6d13ccf575c63670e8282961d58a341eba1e81f823a5278f838d576
data/lib/low_loop.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'async'
4
4
  require 'io/wait'
5
+ require 'paint'
5
6
  require 'socket'
6
7
  require 'low_type'
7
8
  require 'low_event'
@@ -28,7 +29,7 @@ class LowLoop
28
29
  Low::Events::RequestEvent.define do |observers|
29
30
  observers << Low::FileServer.new(web_root: config.web_root, content_types: config.content_types)
30
31
  observers << router if router
31
- observers.push(action: :mirror) if config.mirror_mode
32
+ observers.push(self, action: :mirror) if config.mirror_mode
32
33
  end
33
34
  end
34
35
 
@@ -51,7 +52,7 @@ class LowLoop
51
52
  task.async do
52
53
  handle_connection(socket)
53
54
  rescue StandardError => e
54
- puts e.message
55
+ render_error(e)
55
56
  ensure
56
57
  socket&.close
57
58
  end
@@ -89,6 +90,21 @@ class LowLoop
89
90
 
90
91
  private
91
92
 
93
+ def render_error(e)
94
+ puts "\nException:"
95
+ puts Paint[e.message, :red]
96
+ puts ''
97
+
98
+ if @config.debug_mode
99
+ Fiber.blocking do
100
+ puts Paint[e.backtrace.join("\n"), :blue]
101
+ puts ''
102
+ puts 'Press ENTER to continue...'
103
+ gets
104
+ end
105
+ end
106
+ end
107
+
92
108
  def handle_connection(socket)
93
109
  stream = Low::RequestParser.create_stream(socket:)
94
110
  keep_alive = true
@@ -110,6 +126,7 @@ class LowLoop
110
126
  version ||= request.version
111
127
  keep_alive = keep_alive?(request)
112
128
 
129
+ # TODO: Handle nil return value; create 500 status code response.
113
130
  response_event = Low::Events::RequestEvent.take(request:)
114
131
  response = response_event.response
115
132
 
data/lib/version.rb CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Low
4
4
  module Loop
5
- VERSION = '0.5.1'
5
+ VERSION = '0.6.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: low_loop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - maedi
@@ -51,6 +51,20 @@ dependencies:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: paint
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
54
68
  - !ruby/object:Gem::Dependency
55
69
  name: protocol-http
56
70
  requirement: !ruby/object:Gem::Requirement
@@ -145,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
159
  - !ruby/object:Gem::Version
146
160
  version: '0'
147
161
  requirements: []
148
- rubygems_version: 4.0.6
162
+ rubygems_version: 4.0.10
149
163
  specification_version: 4
150
164
  summary: An event-driven event loop
151
165
  test_files: []