schmooze 0.1.5 → 0.1.6
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/lib/schmooze/base.rb +18 -18
- data/lib/schmooze/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e17a17157ffa3977fd9606f3724c700ed683e08f
|
4
|
+
data.tar.gz: 5944ac0a3d9452497b92a96f363519cd4d8583b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 208b22f5d8196ae9808017725658e5c556e5acc04809f47c01a72b98baf7e2df9b3f4ebea0e72288422b82b647a231c0de09d52c31b1e4c279dc853fae372177
|
7
|
+
data.tar.gz: 739d00c58b9ce6d5b3da72aa4d16aaabfd427707851fe00e615ddf9975877f25661ef4d55a66f85c775fa93076bc8f6cdc069aff0ae3b6b8c3be44faf54ecfe3
|
data/lib/schmooze/base.rb
CHANGED
@@ -8,9 +8,9 @@ module Schmooze
|
|
8
8
|
class << self
|
9
9
|
protected
|
10
10
|
def dependencies(deps)
|
11
|
-
@
|
11
|
+
@_schmooze_imports ||= []
|
12
12
|
deps.each do |identifier, package|
|
13
|
-
@
|
13
|
+
@_schmooze_imports << {
|
14
14
|
identifier: identifier,
|
15
15
|
package: package
|
16
16
|
}
|
@@ -18,8 +18,8 @@ module Schmooze
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def method(name, code)
|
21
|
-
@
|
22
|
-
@
|
21
|
+
@_schmooze_methods ||= []
|
22
|
+
@_schmooze_methods << {
|
23
23
|
name: name,
|
24
24
|
code: code
|
25
25
|
}
|
@@ -41,32 +41,32 @@ module Schmooze
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def initialize(root, env={})
|
44
|
-
@
|
45
|
-
@
|
46
|
-
@
|
44
|
+
@_schmooze_env = env
|
45
|
+
@_schmooze_root = root
|
46
|
+
@_schmooze_code = ProcessorGenerator.generate(self.class.instance_variable_get(:@_schmooze_imports) || [], self.class.instance_variable_get(:@_schmooze_methods) || [])
|
47
47
|
end
|
48
48
|
|
49
49
|
def pid
|
50
|
-
@
|
50
|
+
@_schmooze_process_thread && @_schmooze_process_thread.pid
|
51
51
|
end
|
52
52
|
|
53
53
|
private
|
54
54
|
def ensure_process_is_spawned
|
55
|
-
return if @
|
55
|
+
return if @_schmooze_process_thread
|
56
56
|
spawn_process
|
57
57
|
end
|
58
58
|
|
59
59
|
def spawn_process
|
60
60
|
process_data = Open3.popen3(
|
61
|
-
@
|
61
|
+
@_schmooze_env,
|
62
62
|
'node',
|
63
63
|
'-e',
|
64
|
-
@
|
65
|
-
chdir: @
|
64
|
+
@_schmooze_code,
|
65
|
+
chdir: @_schmooze_root
|
66
66
|
)
|
67
67
|
ensure_packages_are_initiated(*process_data)
|
68
68
|
ObjectSpace.define_finalizer(self, self.class.send(:finalize, *process_data))
|
69
|
-
@
|
69
|
+
@_schmooze_stdin, @_schmooze_stdout, @_schmooze_stderr, @_schmooze_process_thread = process_data
|
70
70
|
end
|
71
71
|
|
72
72
|
def ensure_packages_are_initiated(stdin, stdout, stderr, process_thread)
|
@@ -82,12 +82,12 @@ module Schmooze
|
|
82
82
|
error_message = result[1]
|
83
83
|
if /\AError: Cannot find module '(.*)'\z/ =~ error_message
|
84
84
|
package_name = $1
|
85
|
-
package_json_path = File.join(@
|
85
|
+
package_json_path = File.join(@_schmooze_root, 'package.json')
|
86
86
|
begin
|
87
87
|
package = JSON.parse(File.read(package_json_path))
|
88
88
|
%w(dependencies devDependencies).each do |key|
|
89
89
|
if package.has_key?(key) && package[key].has_key?(package_name)
|
90
|
-
raise Schmooze::DependencyError, "Cannot find module '#{package_name}'. The module was found in '#{package_json_path}' however, please run 'npm install' from '#{@
|
90
|
+
raise Schmooze::DependencyError, "Cannot find module '#{package_name}'. The module was found in '#{package_json_path}' however, please run 'npm install' from '#{@_schmooze_root}'"
|
91
91
|
end
|
92
92
|
end
|
93
93
|
rescue Errno::ENOENT
|
@@ -102,8 +102,8 @@ module Schmooze
|
|
102
102
|
def call_js_method(method, args)
|
103
103
|
ensure_process_is_spawned
|
104
104
|
|
105
|
-
@
|
106
|
-
input = @
|
105
|
+
@_schmooze_stdin.puts JSON.dump([method, args])
|
106
|
+
input = @_schmooze_stdout.gets
|
107
107
|
raise Errno::EPIPE, "Can't read from stdout" if input.nil?
|
108
108
|
|
109
109
|
status, message, error_class = JSON.parse(input)
|
@@ -119,7 +119,7 @@ module Schmooze
|
|
119
119
|
end
|
120
120
|
rescue Errno::EPIPE, IOError
|
121
121
|
# TODO(bouk): restart or something? If this happens the process is completely broken
|
122
|
-
raise ::StandardError, "Schmooze process failed:\n#{@
|
122
|
+
raise ::StandardError, "Schmooze process failed:\n#{@_schmooze_stderr.read}"
|
123
123
|
end
|
124
124
|
end
|
125
125
|
end
|
data/lib/schmooze/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.6
|
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-
|
11
|
+
date: 2016-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|