quartz 1.1.0 → 1.2.0
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/README.md +13 -0
- data/VERSION +1 -1
- data/lib/quartz/go_process.rb +6 -1
- data/quartz.gemspec +2 -2
- data/spec/go_process_spec.rb +21 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a22ff297e6904e0f037039526312cfcb4d2e22018d08c50216ea834b75067de
|
4
|
+
data.tar.gz: 48bfc68a088720318828cc2389c1373753da2d27b9f144101d00c377a8824178
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9f0845a06d885e1706a07040937577765e3c4dfc0eb66ebfce73e5a79df5b4234de1c42c5077f95d0b1642323bd506ebcb4b2cf4494ebc356ce8384f678a37b
|
7
|
+
data.tar.gz: e1f1371656edb1f49e478dc4c99155f42fba25e0bd4a8f523b5bafc29997d4c0a87ec6df670a14c3c87070a1921195bb0eb140fd51ba1b428d88f51a21aba7e5
|
data/README.md
CHANGED
@@ -125,6 +125,19 @@ you can pass the `socket_dir` option.
|
|
125
125
|
client = Quartz::Client.new(bin_path: 'my_adder_binary', socket_dir: '/apps/my_app/tmp')
|
126
126
|
```
|
127
127
|
|
128
|
+
If you want to manage the Go process manually, you can use the
|
129
|
+
following system to set the socket path manually. Now, you can use
|
130
|
+
Systemd/Kubernetes/etc. to manage the Go process.
|
131
|
+
|
132
|
+
```shell
|
133
|
+
$ QUARTZ_SOCKET=/tmp/custom.sock ./go_process
|
134
|
+
```
|
135
|
+
|
136
|
+
```ruby
|
137
|
+
client = Quartz::Client.new(socket_path: '/tmp/custom.sock')
|
138
|
+
|
139
|
+
```
|
140
|
+
|
128
141
|
## Copyright
|
129
142
|
|
130
143
|
Copyright (c) 2018 David Huie. See LICENSE.txt for further details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.2.0
|
data/lib/quartz/go_process.rb
CHANGED
@@ -24,7 +24,7 @@ class Quartz::GoProcess
|
|
24
24
|
def initialize(opts)
|
25
25
|
@seed = SecureRandom.hex
|
26
26
|
socket_dir = opts.fetch(:socket_dir) { '/tmp' }
|
27
|
-
@socket_path = File.join(socket_dir, "quartz_#{seed}.sock")
|
27
|
+
@socket_path = opts[:socket_path] || File.join(socket_dir, "quartz_#{seed}.sock")
|
28
28
|
ENV['QUARTZ_SOCKET'] = @socket_path
|
29
29
|
|
30
30
|
if opts[:file_path]
|
@@ -32,6 +32,8 @@ class Quartz::GoProcess
|
|
32
32
|
compile_and_run(opts[:file_path])
|
33
33
|
elsif opts[:bin_path]
|
34
34
|
@go_process = IO.popen(opts[:bin_path])
|
35
|
+
elsif opts[:socket_path]
|
36
|
+
@external_socket = true
|
35
37
|
else
|
36
38
|
raise Quartz::ConfigError, 'Missing go binary'
|
37
39
|
end
|
@@ -127,6 +129,9 @@ class Quartz::GoProcess
|
|
127
129
|
# process will.
|
128
130
|
return if @forked
|
129
131
|
|
132
|
+
# If the Go process is managed externally, there's nothing to do.
|
133
|
+
return if @external_socket
|
134
|
+
|
130
135
|
unless @killed_go_process
|
131
136
|
Process.kill('SIGTERM', pid)
|
132
137
|
Process.wait(pid)
|
data/quartz.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: quartz 1.
|
5
|
+
# stub: quartz 1.2.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "quartz".freeze
|
9
|
-
s.version = "1.
|
9
|
+
s.version = "1.2.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
data/spec/go_process_spec.rb
CHANGED
@@ -7,11 +7,14 @@ describe Quartz::GoProcess do
|
|
7
7
|
describe '#get_metadata' do
|
8
8
|
|
9
9
|
context 'with a go file' do
|
10
|
-
|
11
10
|
it 'pulls metadata' do
|
12
11
|
expect(process.get_metadata).to eq("adder" => {"NameToMethodMetadata"=>{"Add"=>{"ArgumentToType"=>{"A"=>"int", "B"=>"int"}}, "AddError"=>{"ArgumentToType"=>{"A"=>"int", "B"=>"int"}}}})
|
13
12
|
end
|
14
13
|
|
14
|
+
it 'pulls metadata from the recycled socket' do
|
15
|
+
new_process = Quartz::GoProcess.new(socket_path: process.socket_path)
|
16
|
+
expect(new_process.socket_path).to eq(process.socket_path)
|
17
|
+
end
|
15
18
|
end
|
16
19
|
|
17
20
|
end
|
@@ -53,6 +56,23 @@ describe Quartz::GoProcess do
|
|
53
56
|
|
54
57
|
end
|
55
58
|
|
59
|
+
context 'with a custom socket path' do
|
60
|
+
|
61
|
+
let(:new_process) { Quartz::GoProcess.new(socket_path: process.socket_path) }
|
62
|
+
|
63
|
+
it 'the new process does not clean up the existing socket' do
|
64
|
+
expect(File.exists?(new_process.socket_path)).to be_truthy
|
65
|
+
new_process.cleanup
|
66
|
+
expect(File.exists?(new_process.socket_path)).to be_truthy
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'creates the socket in the socket dir' do
|
70
|
+
result = new_process.call('adder', 'Add', { 'A' => 5, 'B' => 6 })
|
71
|
+
expect(result).to eq({"id"=>1, "result"=>{"X"=>11}, "error"=>nil})
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
56
76
|
describe '.cleanup' do
|
57
77
|
|
58
78
|
context 'files' do
|