schmooze 0.1.4 → 0.1.5
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/.gitignore +1 -0
- data/lib/schmooze/base.rb +20 -14
- data/lib/schmooze/version.rb +1 -1
- data/schmooze.gemspec +0 -1
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 08cf9b75d50bc02e5aa70529583e7ea0cf161f9d
|
4
|
+
data.tar.gz: 0f2d65670a587523324ee3cbf51f2f566e08351a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4c1b94e1bcb56dbb2cc027c8505dde3ef445c852e4dea3106f24f149da6a835414c03531efb9ff43bb5d69e5f5d30b220fee9528ade29a9c46592f872c75f07
|
7
|
+
data.tar.gz: 304d6540043916a422dc7358ed02ab078d4f2c7d1ebbc442691ffe1be0b5cf17507adaf6cdc5a5d8ba0a856cc64f9019671aeeec16b4aace9078a8ac21096937
|
data/.gitignore
CHANGED
data/lib/schmooze/base.rb
CHANGED
@@ -44,36 +44,40 @@ module Schmooze
|
|
44
44
|
@env = env
|
45
45
|
@root = root
|
46
46
|
@code = ProcessorGenerator.generate(self.class.instance_variable_get(:@imports) || [], self.class.instance_variable_get(:@methods) || [])
|
47
|
-
|
48
|
-
spawn_process
|
49
47
|
end
|
50
48
|
|
51
49
|
def pid
|
52
|
-
@process_thread.pid
|
50
|
+
@process_thread && @process_thread.pid
|
53
51
|
end
|
54
52
|
|
55
53
|
private
|
54
|
+
def ensure_process_is_spawned
|
55
|
+
return if @process_thread
|
56
|
+
spawn_process
|
57
|
+
end
|
58
|
+
|
56
59
|
def spawn_process
|
57
|
-
|
60
|
+
process_data = Open3.popen3(
|
58
61
|
@env,
|
59
62
|
'node',
|
60
63
|
'-e',
|
61
64
|
@code,
|
62
65
|
chdir: @root
|
63
66
|
)
|
64
|
-
ensure_packages_are_initiated
|
65
|
-
ObjectSpace.define_finalizer(self, self.class.send(:finalize,
|
67
|
+
ensure_packages_are_initiated(*process_data)
|
68
|
+
ObjectSpace.define_finalizer(self, self.class.send(:finalize, *process_data))
|
69
|
+
@stdin, @stdout, @stderr, @process_thread = process_data
|
66
70
|
end
|
67
71
|
|
68
|
-
def ensure_packages_are_initiated
|
69
|
-
input =
|
70
|
-
raise Schmooze::Error, "Failed to instantiate Schmooze process:\n#{
|
72
|
+
def ensure_packages_are_initiated(stdin, stdout, stderr, process_thread)
|
73
|
+
input = stdout.gets
|
74
|
+
raise Schmooze::Error, "Failed to instantiate Schmooze process:\n#{stderr.read}" if input.nil?
|
71
75
|
result = JSON.parse(input)
|
72
76
|
unless result[0] == 'ok'
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
+
stdin.close
|
78
|
+
stdout.close
|
79
|
+
stderr.close
|
80
|
+
process_thread.join
|
77
81
|
|
78
82
|
error_message = result[1]
|
79
83
|
if /\AError: Cannot find module '(.*)'\z/ =~ error_message
|
@@ -96,6 +100,8 @@ module Schmooze
|
|
96
100
|
end
|
97
101
|
|
98
102
|
def call_js_method(method, args)
|
103
|
+
ensure_process_is_spawned
|
104
|
+
|
99
105
|
@stdin.puts JSON.dump([method, args])
|
100
106
|
input = @stdout.gets
|
101
107
|
raise Errno::EPIPE, "Can't read from stdout" if input.nil?
|
@@ -111,7 +117,7 @@ module Schmooze
|
|
111
117
|
raise Schmooze::JavaScript.const_get(error_class, false), message
|
112
118
|
end
|
113
119
|
end
|
114
|
-
rescue Errno::EPIPE
|
120
|
+
rescue Errno::EPIPE, IOError
|
115
121
|
# TODO(bouk): restart or something? If this happens the process is completely broken
|
116
122
|
raise ::StandardError, "Schmooze process failed:\n#{@stderr.read}"
|
117
123
|
end
|
data/lib/schmooze/version.rb
CHANGED
data/schmooze.gemspec
CHANGED
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schmooze
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bouke van der Bijl
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.11'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '1.11'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: rake
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|