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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c5be0fb97ff14ce8614fb917f47322b48fa8f2d5
4
- data.tar.gz: 5f3682a49751dd0b19e057b8c7107f6defb7150a
3
+ metadata.gz: 08cf9b75d50bc02e5aa70529583e7ea0cf161f9d
4
+ data.tar.gz: 0f2d65670a587523324ee3cbf51f2f566e08351a
5
5
  SHA512:
6
- metadata.gz: 6579f49f78ec65aec51442039b7631147eac332412599613efbf3790e0d8c5faeed8adfab09e7b711e94375821fc6740093f0464269a49ec000b4b8e7008ca30
7
- data.tar.gz: 36a88df1c0ada1faadf763c8292220bb27694143b3d944dfced3d0f9fd92878db33d8b455f0db6ae187c1cb246b79f2f6f6102139b230e17c8d1fc807e12884f
6
+ metadata.gz: c4c1b94e1bcb56dbb2cc027c8505dde3ef445c852e4dea3106f24f149da6a835414c03531efb9ff43bb5d69e5f5d30b220fee9528ade29a9c46592f872c75f07
7
+ data.tar.gz: 304d6540043916a422dc7358ed02ab078d4f2c7d1ebbc442691ffe1be0b5cf17507adaf6cdc5a5d8ba0a856cc64f9019671aeeec16b4aace9078a8ac21096937
data/.gitignore CHANGED
@@ -7,4 +7,5 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ /test/fixtures/late-dep/empty.js
10
11
  node_modules
@@ -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
- @stdin, @stdout, @stderr, @process_thread = Open3.popen3(
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, @stdin, @stdout, @stderr, @process_thread))
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 = @stdout.gets
70
- raise Schmooze::Error, "Failed to instantiate Schmooze process:\n#{@stderr.read}" if input.nil?
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
- @stdin.close
74
- @stdout.close
75
- @stderr.close
76
- @process_thread.join
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
@@ -1,3 +1,3 @@
1
1
  module Schmooze
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -17,7 +17,6 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.require_paths = ['lib']
19
19
 
20
- spec.add_development_dependency 'bundler', '~> 1.11'
21
20
  spec.add_development_dependency 'rake', '~> 10.0'
22
21
  spec.add_development_dependency 'minitest', '~> 5.0'
23
22
  end
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
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-17 00:00:00.000000000 Z
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