nodo 1.5.3 → 1.5.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/nodo/core.rb +15 -3
- data/lib/nodo/function.rb +3 -3
- data/lib/nodo/version.rb +1 -1
- data/lib/nodo.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68a024656d2aaacddb3f52790316307d06acd432c0e5f43d149ad6c716888899
|
4
|
+
data.tar.gz: 07020ab3ca97f25f90e2e0f2b26ecdf43f78312a308852e6f5f0a50e6ad57d73
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89c52ca6b172f94b4bc55730cad6d9934fe4c1fc914b0236665202ec26f5d98b77790336aed67af275fd2b4d5050dce4675b43d02639a9a5911d2836b651e6ae
|
7
|
+
data.tar.gz: 9a7fe1128ed3198d2ae4a936eda189d806f3a5e3221efb745d71b7b2a92dff546855e7f06a457648241860e1515ec0aae6ea8bc63703d64b0a9ba87a298174c5
|
data/lib/nodo/core.rb
CHANGED
@@ -12,6 +12,8 @@ module Nodo
|
|
12
12
|
@@mutex = Mutex.new
|
13
13
|
|
14
14
|
class << self
|
15
|
+
extend Forwardable
|
16
|
+
|
15
17
|
attr_accessor :class_defined
|
16
18
|
|
17
19
|
def inherited(subclass)
|
@@ -24,6 +26,10 @@ module Nodo
|
|
24
26
|
@instance ||= new
|
25
27
|
end
|
26
28
|
|
29
|
+
def class_function(*methods)
|
30
|
+
singleton_class.def_delegators(:instance, *methods)
|
31
|
+
end
|
32
|
+
|
27
33
|
def class_defined?
|
28
34
|
!!class_defined
|
29
35
|
end
|
@@ -56,8 +62,10 @@ module Nodo
|
|
56
62
|
self.dependencies = dependencies + mods.merge(deps).map { |name, package| Dependency.new(name, package) }
|
57
63
|
end
|
58
64
|
|
59
|
-
def function(name, code)
|
60
|
-
|
65
|
+
def function(name, _code = nil, timeout: 60, code: nil)
|
66
|
+
code = (code ||= _code).strip
|
67
|
+
raise ArgumentError, 'function code is required' if '' == code
|
68
|
+
self.functions = functions.merge(name => Function.new(name, _code || code, caller.first, timeout))
|
61
69
|
define_method(name) { |*args| call_js_method(name, args) }
|
62
70
|
end
|
63
71
|
|
@@ -181,12 +189,15 @@ module Nodo
|
|
181
189
|
request = Net::HTTP::Post.new("/#{clsid}/#{method}", 'Content-Type': 'application/json')
|
182
190
|
request.body = JSON.dump(args)
|
183
191
|
client = Client.new("unix://#{socket_path}")
|
192
|
+
client.read_timeout = function.timeout if function
|
184
193
|
response = client.request(request)
|
185
194
|
if response.is_a?(Net::HTTPOK)
|
186
195
|
parse_response(response)
|
187
196
|
else
|
188
197
|
handle_error(response, function)
|
189
198
|
end
|
199
|
+
rescue Net::ReadTimeout
|
200
|
+
raise TimeoutError, "function call #{self.class}##{method} timed out"
|
190
201
|
rescue Errno::EPIPE, IOError
|
191
202
|
# TODO: restart or something? If this happens the process is completely broken
|
192
203
|
raise Error, 'Node process failed'
|
@@ -201,7 +212,8 @@ module Nodo
|
|
201
212
|
end
|
202
213
|
|
203
214
|
def parse_response(response)
|
204
|
-
|
215
|
+
data = response.body.force_encoding('UTF-8')
|
216
|
+
JSON.parse(data) unless data == ''
|
205
217
|
end
|
206
218
|
|
207
219
|
def with_tempfile(name)
|
data/lib/nodo/function.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
module Nodo
|
2
2
|
class Function
|
3
|
-
attr_reader :name, :code, :source_location
|
3
|
+
attr_reader :name, :code, :source_location, :timeout
|
4
4
|
|
5
|
-
def initialize(name, code, source_location)
|
6
|
-
@name, @code, @source_location = name, code, source_location
|
5
|
+
def initialize(name, code, source_location, timeout)
|
6
|
+
@name, @code, @source_location, @timeout = name, code, source_location, timeout
|
7
7
|
end
|
8
8
|
|
9
9
|
def to_js
|
data/lib/nodo/version.rb
CHANGED
data/lib/nodo.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nodo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthias Grosser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-10-
|
11
|
+
date: 2021-10-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|