Skip to content

Commit a8b062a

Browse files
committed
fix
2 parents 77facd5 + 869e92e commit a8b062a

File tree

6 files changed

+38
-16
lines changed

6 files changed

+38
-16
lines changed

META6.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,12 @@
2929
"Humming-Bird::Plugin::Config": "lib/Humming-Bird/Plugin/Config.rakumod",
3030
"Humming-Bird::Plugin::Logger": "lib/Humming-Bird/Plugin/Logger.rakumod",
3131
"Humming-Bird::Plugin::Session": "lib/Humming-Bird/Plugin/Session.rakumod",
32+
<<<<<<< HEAD
3233
"Humming-Bird::Plugin::DBIish": "lib/Humming-Bird/Plugin/DBIish.rakumod"
34+
=======
35+
"Humming-Bird::Plugin::DBIish": "lib/Humming-Bird/Plugin/DBIish.rakumod",
36+
"Humming-Bird::Plugin::HotReload": "lib/Humming-Bird/Plugin/HotReload.rakumod"
37+
>>>>>>> dbiish
3338
},
3439
"resources": [
3540
],

lib/Humming-Bird/Backend/HTTPServer.rakumod

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ my constant $RN = "\r\n".encode.Buf;
1717
has Channel:D $.requests .= new;
1818
has Lock $!lock .= new;
1919
has @!connections;
20+
has $!conn-channel;
21+
22+
method close {
23+
$_.close for @!connections;
24+
$!conn-channel.close;
25+
}
2026

2127
method !timeout {
2228
start {
@@ -69,7 +75,8 @@ method listen(&handler) {
6975
react {
7076
self!timeout;
7177
self!respond(&handler);
72-
whenever IO::Socket::Async.listen($.addr // '0.0.0.0', $.port) -> $connection {
78+
$!conn-channel = IO::Socket::Async.listen($.addr // '0.0.0.0', $.port).Channel;
79+
whenever $!conn-channel -> $connection {
7380
my %connection-map := {
7481
socket => $connection,
7582
last-active => now

lib/Humming-Bird/Plugin/DBIish.rakumod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ method register($server, %routes, @middleware, @advice, **@args) {
4141

4242
my $dh = $dbiish.install-driver(shift @database-args);
4343

44-
say @database-args;
4544
%databases{$database-name} = $dh.connect(|%(|@database-args));
4645

4746
CATCH {

lib/Humming-Bird/Plugin/HotReload.rakumod

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,27 @@ class Humming-Bird::Backend::HotReload does Humming-Bird::Backend {
1313
self!start-server();
1414

1515
react whenever $!reload-chan -> $reload {
16-
$.backend.close;
17-
self!start-server();
16+
if ($reload === True) {
17+
$.backend.close;
18+
self!start-server();
19+
}
1820
}
1921
}
2022

2123
method !start-server {
2224
start {
23-
listen(self.port, self.addr, );
25+
listen(self.port, self.addr);
2426
}
2527
}
2628

2729
method !observe {
28-
30+
react whenever IO::Notification.watch-path('.') {
31+
say "$^file changed, reloading Humming-Bird...";
32+
$!reload-chan.send: True;
33+
}
2934
}
3035
}
3136

3237
method register($server is rw, %routes, @middleware, @advice, **@args) {
33-
die 'Humming-Bird::Backend::HotRealod is WIP. Please do not use it yet.';
34-
$server = Humming-Bird::Backend::HotReload.new(backend => $server);
35-
CATCH {
36-
default {
37-
warn 'Failed to find or parse your ".humming-bird.json" configuration. Ensure your file is well formed, and does exist.';
38-
}
39-
}
38+
$server := Humming-Bird::Backend::HotReload.new(backend => $server, timeout => 3);
4039
}

t/13-plugin.rakutest

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ class TestBackend does Humming-Bird::Backend {
1515
}
1616
}
1717

18-
lives-ok sub { plugin('Config', 't/static/.humming-bird.json'); }, 'Does plugin not die?';
19-
lives-ok sub { plugin 'Logger'; }, 'Does other plugin not die?';
20-
lives-ok sub { plugin 'Session'; }, 'Does other plugin not die?';
18+
lives-ok sub { plugin('Config', 't/static/.humming-bird.json'); }, 'Does Config plugin not die?';
19+
lives-ok sub { plugin 'Logger'; }, 'Does Logger plugin not die?';
20+
lives-ok sub { plugin 'Session'; }, 'Does Session plugin not die?';
2121
lives-ok sub { listen(8080, :backend(TestBackend)); }, 'Does plugin register ok?';
2222
ok Humming-Bird::Glue::HTTPAction.^can('config'), 'Did plugin properly run?';
2323

t/14-hotreload.rakutest

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
use v6;
2+
use lib 'lib';
3+
use Test;
4+
use Humming-Bird::Core;
5+
use Humming-Bird::Glue;
6+
use Humming-Bird::Backend;
7+
use Humming-Bird::Middleware;
8+
use Humming-Bird::Advice;
9+
10+
plan 1;
11+
12+
lives-ok { plugin 'HotReload' }, 'Does HotReload plugin live ok?';

0 commit comments

Comments
 (0)