schmooze 0.1.4 → 0.1.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
  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