nodo 1.5.4 → 1.5.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 68a024656d2aaacddb3f52790316307d06acd432c0e5f43d149ad6c716888899
4
- data.tar.gz: 07020ab3ca97f25f90e2e0f2b26ecdf43f78312a308852e6f5f0a50e6ad57d73
3
+ metadata.gz: 3cef66bc4b1d53b20500110ac7acbc226ec361b6aaed569874ce8568a6718242
4
+ data.tar.gz: ab2cae6eef01d53ebc1c471a5e08edfd37a263178adc49aa459c98dfcea4e92f
5
5
  SHA512:
6
- metadata.gz: 89c52ca6b172f94b4bc55730cad6d9934fe4c1fc914b0236665202ec26f5d98b77790336aed67af275fd2b4d5050dce4675b43d02639a9a5911d2836b651e6ae
7
- data.tar.gz: 9a7fe1128ed3198d2ae4a936eda189d806f3a5e3221efb745d71b7b2a92dff546855e7f06a457648241860e1515ec0aae6ea8bc63703d64b0a9ba87a298174c5
6
+ metadata.gz: 9bf90e8b56366f2e42039026575db43a0c5a9808a677a533c3e211c9ae211a8f06b2ea0890550e22fca259f9fa416c0e96017a676538a3eb673f2a66caa0996a
7
+ data.tar.gz: 2573e2dfd199bb9f8e25dc11c5dcb49e0ba6f29796aaa523656fa1020e0d8ce325ab411cf2d60413ac0557407fec4a132ba51d75075585a0e7b56d76bfc42811
data/README.md CHANGED
@@ -39,13 +39,13 @@ In Nodo, you define JS functions as you would define Ruby methods:
39
39
 
40
40
  ```ruby
41
41
  class Foo < Nodo::Core
42
-
42
+
43
43
  function :say_hi, <<~JS
44
44
  (name) => {
45
45
  return `Hello ${name}!`;
46
46
  }
47
47
  JS
48
-
48
+
49
49
  end
50
50
 
51
51
  foo = Foo.new
@@ -90,6 +90,14 @@ class FooBar < Nodo::Core
90
90
  end
91
91
  ```
92
92
 
93
+ ### Alternate function definition syntax
94
+
95
+ JS code can also be supplied using the `code:` keyword argument:
96
+
97
+ ```ruby
98
+ function :hello, code: "() => 'world'"
99
+ ```
100
+
93
101
  ### Setting NODE_PATH
94
102
 
95
103
  By default, `./node_modules` is used as the `NODE_PATH`.
@@ -130,7 +138,8 @@ end
130
138
 
131
139
  ### Inheritance
132
140
 
133
- Subclasses will inherit functions, constants, dependencies and scripts from their superclasses, while only functions can be overwritten.
141
+ Subclasses will inherit functions, constants, dependencies and scripts from
142
+ their superclasses, while only functions can be overwritten.
134
143
 
135
144
  ```ruby
136
145
  class Foo < Nodo::Core
@@ -153,7 +162,8 @@ SubSubFoo.new.bar => "callingsubsubclass"
153
162
  ### Async functions
154
163
 
155
164
  `Nodo` supports calling `async` functions from Ruby.
156
- The Ruby call will happen synchronously, i.e. it will block until the JS function resolves:
165
+ The Ruby call will happen synchronously, i.e. it will block until the JS
166
+ function resolves:
157
167
 
158
168
  ```ruby
159
169
  class SyncFoo < Nodo::Core
@@ -162,3 +172,19 @@ class SyncFoo < Nodo::Core
162
172
  JS
163
173
  end
164
174
  ```
175
+
176
+ ### Limiting function execution time
177
+
178
+ The default timeout for a single JS function call is 60 seconds due to the
179
+ `Net::HTTP` default. It can be overridden on a per-function basis:
180
+
181
+ ```ruby
182
+ class Foo < Nodo::Core
183
+ function :sleep, timeout: 1, code: <<~'JS'
184
+ async (sec) => await new Promise(resolve => setTimeout(resolve, sec * 1000))
185
+ JS
186
+ end
187
+
188
+ foo.new.sleep(2)
189
+ => Nodo::TimeoutError raised
190
+ ```
data/lib/nodo/core.rb CHANGED
@@ -63,6 +63,7 @@ module Nodo
63
63
  end
64
64
 
65
65
  def function(name, _code = nil, timeout: 60, code: nil)
66
+ raise ArgumentError, "reserved method name #{name.inspect}" if Nodo::Core.method_defined?(name)
66
67
  code = (code ||= _code).strip
67
68
  raise ArgumentError, 'function code is required' if '' == code
68
69
  self.functions = functions.merge(name => Function.new(name, _code || code, caller.first, timeout))
@@ -174,7 +175,7 @@ module Nodo
174
175
  begin
175
176
  break if socket = UNIXSocket.new(socket_path)
176
177
  rescue Errno::ENOENT, Errno::ECONNREFUSED, Errno::ENOTDIR
177
- sleep 0.2
178
+ Kernel.sleep(0.2)
178
179
  end
179
180
  end
180
181
  socket.close if socket
data/lib/nodo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Nodo
2
- VERSION = '1.5.4'
2
+ VERSION = '1.5.5'
3
3
  end
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
4
+ version: 1.5.5
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-06 00:00:00.000000000 Z
11
+ date: 2021-10-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler