syntropy 0.9.1 → 0.10
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/CHANGELOG.md +9 -0
- data/README.md +1 -2
- data/TODO.md +2 -0
- data/lib/syntropy/app.rb +13 -7
- data/lib/syntropy/connection_pool.rb +8 -0
- data/lib/syntropy/module.rb +10 -5
- data/lib/syntropy/router.rb +6 -2
- data/lib/syntropy/version.rb +1 -1
- data/syntropy.gemspec +3 -3
- metadata +9 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a73932b30656f39aa80ecfdd0161a04bb6aff7d0895d24c092d89422bc5cebe
|
4
|
+
data.tar.gz: 07266a98667a5a9b45756d25a79abc0143f7f99f786fa8fde1e2a5d58f237392
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e84b35bff3fd83e038488aa581710c79dd23adaa11777cdb2872fc06562f3e79e2ce000afd270677feaead75cff90a07a8e88f312b4fae4fcd4772cfa3b3c228
|
7
|
+
data.tar.gz: b8788e723ca3108c78e65bcd445fa91184e0835f602b1fdb46bf06add11681e61cc1429f6e9f72f415bc33b1b80e9dc7e56587881c02401e0e5ecde5d0551714
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -42,8 +42,7 @@ Syntropy is based on:
|
|
42
42
|
concurrent Ruby apps.
|
43
43
|
- [Qeweney](https://github.com/digital-fabric/qeweney) a uniform interface for
|
44
44
|
working with HTTP requests and responses.
|
45
|
-
- [
|
46
|
-
with plain Ruby.
|
45
|
+
- [P2](https://github.com/digital-fabric/p2) HTML templating with plain Ruby.
|
47
46
|
- [Extralite](https://github.com/digital-fabric/extralite) a fast and innovative
|
48
47
|
SQLite wrapper for Ruby.
|
49
48
|
|
data/TODO.md
CHANGED
data/lib/syntropy/app.rb
CHANGED
@@ -4,7 +4,7 @@ require 'json'
|
|
4
4
|
require 'yaml'
|
5
5
|
|
6
6
|
require 'qeweney'
|
7
|
-
require '
|
7
|
+
require 'p2'
|
8
8
|
|
9
9
|
require 'syntropy/errors'
|
10
10
|
require 'syntropy/file_watch'
|
@@ -45,7 +45,9 @@ module Syntropy
|
|
45
45
|
# we do startup stuff asynchronously, in order to first let TP2 do its
|
46
46
|
# setup tasks
|
47
47
|
@machine.sleep 0.15
|
48
|
-
@opts[:logger]&.
|
48
|
+
@opts[:logger]&.info(
|
49
|
+
message: "Serving from #{File.expand_path(@location)}"
|
50
|
+
)
|
49
51
|
@router.start_file_watcher if opts[:watch_files]
|
50
52
|
end
|
51
53
|
end
|
@@ -137,15 +139,19 @@ module Syntropy
|
|
137
139
|
def load_module(entry)
|
138
140
|
ref = entry[:fn].gsub(%r{^#{@location}/}, '').gsub(/\.rb$/, '')
|
139
141
|
o = @module_loader.load(ref)
|
140
|
-
o.is_a?(
|
142
|
+
o.is_a?(P2::Template) ? wrap_template(o) : o
|
141
143
|
rescue Exception => e
|
142
|
-
@opts[:logger]&.
|
144
|
+
@opts[:logger]&.error(
|
145
|
+
message: "Error while loading module #{ref}",
|
146
|
+
error: e
|
147
|
+
)
|
143
148
|
:invalid
|
144
149
|
end
|
145
150
|
|
146
|
-
def wrap_template(
|
151
|
+
def wrap_template(wrapper)
|
152
|
+
template = wrapper.proc
|
147
153
|
lambda { |req|
|
148
|
-
headers = { 'Content-Type' =>
|
154
|
+
headers = { 'Content-Type' => 'text/html' }
|
149
155
|
req.respond_by_http_method(
|
150
156
|
'head' => [nil, headers],
|
151
157
|
'get' => -> { [template.render, headers] }
|
@@ -160,7 +166,7 @@ module Syntropy
|
|
160
166
|
layout = @module_loader.load("_layout/#{atts[:layout]}")
|
161
167
|
html = layout.apply(**atts) { emit_markdown(md) }.render
|
162
168
|
else
|
163
|
-
html =
|
169
|
+
html = P2.markdown(md)
|
164
170
|
end
|
165
171
|
html
|
166
172
|
end
|
data/lib/syntropy/module.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'p2'
|
4
4
|
|
5
5
|
module Syntropy
|
6
6
|
class ModuleLoader
|
@@ -32,7 +32,7 @@ module Syntropy
|
|
32
32
|
|
33
33
|
mod_body = IO.read(fn)
|
34
34
|
mod_ctx = Class.new(Syntropy::Module)
|
35
|
-
mod_ctx.prepare(loader: self, env: @env)
|
35
|
+
mod_ctx.prepare(loader: self, env: @env, ref: ref)
|
36
36
|
mod_ctx.module_eval(mod_body, fn, 1)
|
37
37
|
|
38
38
|
export_value = mod_ctx.__export_value__
|
@@ -64,10 +64,11 @@ module Syntropy
|
|
64
64
|
end
|
65
65
|
|
66
66
|
class << self
|
67
|
-
def prepare(loader:, env:)
|
67
|
+
def prepare(loader:, env:, ref:)
|
68
68
|
@loader = loader
|
69
69
|
@env = env
|
70
70
|
@machine = env[:machine]
|
71
|
+
@ref = ref
|
71
72
|
const_set(:MODULE, self)
|
72
73
|
end
|
73
74
|
|
@@ -81,9 +82,13 @@ module Syntropy
|
|
81
82
|
@__export_value__ = ref
|
82
83
|
end
|
83
84
|
|
84
|
-
def template(&block)
|
85
|
-
|
85
|
+
def template(proc = nil, &block)
|
86
|
+
proc ||= block
|
87
|
+
raise "No template block/proc given" if !proc
|
88
|
+
|
89
|
+
P2::Template.new(proc)
|
86
90
|
end
|
91
|
+
alias_method :html, :template
|
87
92
|
|
88
93
|
def route_by_host(map = nil)
|
89
94
|
root = @env[:location]
|
data/lib/syntropy/router.rb
CHANGED
@@ -26,7 +26,9 @@ module Syntropy
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def start_file_watcher
|
29
|
-
@opts[:logger]&.
|
29
|
+
@opts[:logger]&.info(
|
30
|
+
message: 'Watching for file changes...'
|
31
|
+
)
|
30
32
|
@machine.spin { file_watcher_loop }
|
31
33
|
end
|
32
34
|
|
@@ -170,7 +172,9 @@ module Syntropy
|
|
170
172
|
end
|
171
173
|
|
172
174
|
def handle_changed_file(event, fn)
|
173
|
-
@opts[:logger]&.
|
175
|
+
@opts[:logger]&.info(
|
176
|
+
message: "Detected changed file: #{event} #{fn}"
|
177
|
+
)
|
174
178
|
@module_loader&.invalidate(fn)
|
175
179
|
case event
|
176
180
|
when :added
|
data/lib/syntropy/version.rb
CHANGED
data/syntropy.gemspec
CHANGED
@@ -21,9 +21,9 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.required_ruby_version = '>= 3.4'
|
22
22
|
s.executables = ['syntropy']
|
23
23
|
|
24
|
-
s.add_dependency 'extralite', '2.
|
25
|
-
s.add_dependency 'json', '2.
|
26
|
-
s.add_dependency '
|
24
|
+
s.add_dependency 'extralite', '2.13'
|
25
|
+
s.add_dependency 'json', '2.13.2'
|
26
|
+
s.add_dependency 'p2', '2.4'
|
27
27
|
s.add_dependency 'qeweney', '0.21'
|
28
28
|
s.add_dependency 'tp2', '0.14.1'
|
29
29
|
s.add_dependency 'uringmachine', '0.16'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: syntropy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.10'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sharon Rosner
|
@@ -15,42 +15,42 @@ dependencies:
|
|
15
15
|
requirements:
|
16
16
|
- - '='
|
17
17
|
- !ruby/object:Gem::Version
|
18
|
-
version: '2.
|
18
|
+
version: '2.13'
|
19
19
|
type: :runtime
|
20
20
|
prerelease: false
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
22
22
|
requirements:
|
23
23
|
- - '='
|
24
24
|
- !ruby/object:Gem::Version
|
25
|
-
version: '2.
|
25
|
+
version: '2.13'
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: json
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
29
29
|
requirements:
|
30
30
|
- - '='
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 2.
|
32
|
+
version: 2.13.2
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - '='
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 2.
|
39
|
+
version: 2.13.2
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
|
-
name:
|
41
|
+
name: p2
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - '='
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
46
|
+
version: '2.4'
|
47
47
|
type: :runtime
|
48
48
|
prerelease: false
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - '='
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '2.4'
|
54
54
|
- !ruby/object:Gem::Dependency
|
55
55
|
name: qeweney
|
56
56
|
requirement: !ruby/object:Gem::Requirement
|
@@ -258,7 +258,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
258
258
|
- !ruby/object:Gem::Version
|
259
259
|
version: '0'
|
260
260
|
requirements: []
|
261
|
-
rubygems_version: 3.6.
|
261
|
+
rubygems_version: 3.6.9
|
262
262
|
specification_version: 4
|
263
263
|
summary: Syntropic Web Framework
|
264
264
|
test_files: []
|