quartz 0.3.0 → 1.0.0

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
- SHA1:
3
- metadata.gz: 54fa8d117c07a217078603aa35356d7e22375b5a
4
- data.tar.gz: 4b1fd80f82faff8ecddc5799c5a4ace3ea382e14
2
+ SHA256:
3
+ metadata.gz: 4a5901b08fbf0d36cc847822fd1798004bb974045002d490e94f1672e158ba77
4
+ data.tar.gz: 4855108303c8db1da953ba64ce893b8ceed7d5402a22ad1e41ee7b827cc1365d
5
5
  SHA512:
6
- metadata.gz: 49d594adafa5f15cc926ad8c2317bbfcc80949d3c48f828189f8112c995e9804fe491f3649230f65bbe7b68954c65bd2c32e060491693ed0b49e1fa7dc9d7a7c
7
- data.tar.gz: a04a4b95f0b7d1e349940b4cc140fde0f7ab8b86adc2e400366558fac453f127838c5049342eeb8b7ea53d040baf2aa4dfbb431725de4b11f5a4ba3664f13396
6
+ metadata.gz: bea12833a8a77a9c08f3b3f2da13a5480d94fd2710535d7f7bf54711ab2339cc1fc890e7869aa748b9df15f2843108611adb97c9b4476ac16875e3a4ef8226e4
7
+ data.tar.gz: 1104a944a663d87238ddd25b8e2e293e1f04d3c95e3b0ccd7f37cce45764b522b1c4872d2273188a011aecaa46866a08ac46177ee63e37ce7f2329bf5e66116e
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.1.5
1
+ 2.5.1
data/.travis.yml CHANGED
@@ -1,17 +1,12 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
- - 2.0.0
5
- - 2.1.5
6
- - 2.2.0
3
+ - 2.5.1
7
4
  before_script:
8
5
  - sudo apt-get install build-essential
9
- - git clone --branch=go1.4.1 --depth=1 https://github.com/golang/go.git ~/go
10
- - pushd ~/go/src && ./make.bash && popd
6
+ - pushd /tmp && wget https://dl.google.com/go/go1.10.2.linux-amd64.tar.gz && tar -xf go1.10.2.linux-amd64.tar.gz && sudo cp -R go /usr/local/ && popd
11
7
  - mkdir -p ~/src/github.com/DavidHuie
12
8
  - ln -s `pwd` ~/src/github.com/DavidHuie/quartz
13
9
  env:
14
- - GOROOT=~/go GOPATH=~/ PATH=$GOROOT/bin:$GOPATH/bin:$PATH
10
+ - GOROOT=/usr/local/go GOPATH=~/ PATH=$GOROOT/bin:$GOPATH/bin:$PATH
15
11
  script:
16
12
  - bundle exec rake
17
- - go test ./go/quartz
data/Gemfile CHANGED
@@ -1,9 +1,10 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
+ gem 'multi_json', '~> 1.13'
4
+
3
5
  group :development do
4
- gem 'jeweler', '~> 2.0'
5
- gem 'rspec', '~> 3.1'
6
- gem 'ruby-prof', '~> 0.15'
7
- gem 'simplecov', '~> 0.9'
8
- gem 'multi_json', '~> 1.4'
6
+ gem 'jeweler', '~> 2.3'
7
+ gem 'rspec', '~> 3.7'
8
+ gem 'ruby-prof', '~> 0.17'
9
+ gem 'simplecov', '~> 0.16'
9
10
  end
data/Gemfile.lock CHANGED
@@ -1,79 +1,85 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- addressable (2.3.7)
5
- builder (3.2.2)
4
+ addressable (2.4.0)
5
+ builder (3.2.3)
6
6
  descendants_tracker (0.0.4)
7
7
  thread_safe (~> 0.3, >= 0.3.1)
8
- diff-lcs (1.2.5)
9
- docile (1.1.5)
10
- faraday (0.9.1)
8
+ diff-lcs (1.3)
9
+ docile (1.3.1)
10
+ faraday (0.9.2)
11
11
  multipart-post (>= 1.2, < 3)
12
- git (1.2.9.1)
13
- github_api (0.12.3)
14
- addressable (~> 2.3)
12
+ git (1.4.0)
13
+ github_api (0.16.0)
14
+ addressable (~> 2.4.0)
15
15
  descendants_tracker (~> 0.0.4)
16
16
  faraday (~> 0.8, < 0.10)
17
- hashie (>= 3.3)
18
- multi_json (>= 1.7.5, < 2.0)
19
- nokogiri (~> 1.6.3)
20
- oauth2
21
- hashie (3.4.0)
22
- highline (1.7.1)
23
- jeweler (2.0.1)
17
+ hashie (>= 3.4)
18
+ mime-types (>= 1.16, < 3.0)
19
+ oauth2 (~> 1.0)
20
+ hashie (3.5.7)
21
+ highline (1.7.10)
22
+ jeweler (2.3.9)
24
23
  builder
25
- bundler (>= 1.0)
24
+ bundler
26
25
  git (>= 1.2.5)
27
- github_api
26
+ github_api (~> 0.16.0)
28
27
  highline (>= 1.6.15)
29
28
  nokogiri (>= 1.5.10)
29
+ psych
30
30
  rake
31
31
  rdoc
32
- json (1.8.2)
33
- jwt (1.3.0)
34
- mini_portile (0.6.2)
35
- multi_json (1.10.1)
36
- multi_xml (0.5.5)
32
+ semver2
33
+ json (2.1.0)
34
+ jwt (1.5.6)
35
+ mime-types (2.99.3)
36
+ mini_portile2 (2.3.0)
37
+ multi_json (1.13.1)
38
+ multi_xml (0.6.0)
37
39
  multipart-post (2.0.0)
38
- nokogiri (1.6.6.2)
39
- mini_portile (~> 0.6.0)
40
- oauth2 (1.0.0)
41
- faraday (>= 0.8, < 0.10)
40
+ nokogiri (1.8.2)
41
+ mini_portile2 (~> 2.3.0)
42
+ oauth2 (1.4.0)
43
+ faraday (>= 0.8, < 0.13)
42
44
  jwt (~> 1.0)
43
45
  multi_json (~> 1.3)
44
46
  multi_xml (~> 0.5)
45
- rack (~> 1.2)
46
- rack (1.6.0)
47
- rake (10.4.2)
48
- rdoc (4.2.0)
49
- json (~> 1.4)
50
- rspec (3.2.0)
51
- rspec-core (~> 3.2.0)
52
- rspec-expectations (~> 3.2.0)
53
- rspec-mocks (~> 3.2.0)
54
- rspec-core (3.2.1)
55
- rspec-support (~> 3.2.0)
56
- rspec-expectations (3.2.0)
47
+ rack (>= 1.2, < 3)
48
+ psych (3.0.2)
49
+ rack (2.0.5)
50
+ rake (12.3.1)
51
+ rdoc (6.0.4)
52
+ rspec (3.7.0)
53
+ rspec-core (~> 3.7.0)
54
+ rspec-expectations (~> 3.7.0)
55
+ rspec-mocks (~> 3.7.0)
56
+ rspec-core (3.7.1)
57
+ rspec-support (~> 3.7.0)
58
+ rspec-expectations (3.7.0)
57
59
  diff-lcs (>= 1.2.0, < 2.0)
58
- rspec-support (~> 3.2.0)
59
- rspec-mocks (3.2.1)
60
+ rspec-support (~> 3.7.0)
61
+ rspec-mocks (3.7.0)
60
62
  diff-lcs (>= 1.2.0, < 2.0)
61
- rspec-support (~> 3.2.0)
62
- rspec-support (3.2.2)
63
- ruby-prof (0.15.6)
64
- simplecov (0.9.2)
65
- docile (~> 1.1.0)
66
- multi_json (~> 1.0)
67
- simplecov-html (~> 0.9.0)
68
- simplecov-html (0.9.0)
69
- thread_safe (0.3.4)
63
+ rspec-support (~> 3.7.0)
64
+ rspec-support (3.7.1)
65
+ ruby-prof (0.17.0)
66
+ semver2 (3.4.2)
67
+ simplecov (0.16.1)
68
+ docile (~> 1.1)
69
+ json (>= 1.8, < 3)
70
+ simplecov-html (~> 0.10.0)
71
+ simplecov-html (0.10.2)
72
+ thread_safe (0.3.6)
70
73
 
71
74
  PLATFORMS
72
75
  ruby
73
76
 
74
77
  DEPENDENCIES
75
- jeweler (~> 2.0)
76
- multi_json (~> 1.4)
77
- rspec (~> 3.1)
78
- ruby-prof (~> 0.15)
79
- simplecov (~> 0.9)
78
+ jeweler (~> 2.3)
79
+ multi_json (~> 1.13)
80
+ rspec (~> 3.7)
81
+ ruby-prof (~> 0.17)
82
+ simplecov (~> 0.16)
83
+
84
+ BUNDLED WITH
85
+ 1.16.2
data/README.md CHANGED
@@ -117,6 +117,14 @@ client[:my_adder].call('Add', 'A' => 2, 'B' => 5)
117
117
  => { 'Sum' => 7 }
118
118
  ```
119
119
 
120
+ By default the unix socket is created under `/tmp`. If you want to change that
121
+ you can pass the `socket_dir` option.
122
+
123
+
124
+ ```ruby
125
+ client = Quartz::Client.new(bin_path: 'my_adder_binary', socket_dir: '/apps/my_app/tmp')
126
+ ```
127
+
120
128
  ## Copyright
121
129
 
122
- Copyright (c) 2014 David Huie. See LICENSE.txt for further details.
130
+ Copyright (c) 2018 David Huie. See LICENSE.txt for further details.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 1.0.0
data/go/quartz/quartz.go CHANGED
@@ -7,10 +7,11 @@ import (
7
7
  "os"
8
8
  "os/signal"
9
9
  "reflect"
10
+ "strings"
10
11
  "syscall"
11
12
  )
12
13
 
13
- // This holds information about exported structs.
14
+ // Quartz holds information about exported structs.
14
15
  type Quartz struct {
15
16
  Registry *Registry
16
17
  }
@@ -19,7 +20,8 @@ func newQuartz() *Quartz {
19
20
  return &Quartz{newRegistry()}
20
21
  }
21
22
 
22
- // Exports a struct via RPC and generates metadata for each of the struct's methods.
23
+ // RegisterName exports a struct via RPC and generates metadata for
24
+ // each of the struct's methods.
23
25
  func (q *Quartz) RegisterName(name string, s interface{}) error {
24
26
  q.Registry.data[name] = newStructMetadata(s)
25
27
  t := reflect.TypeOf(s)
@@ -36,6 +38,7 @@ func (q *Quartz) RegisterName(name string, s interface{}) error {
36
38
  return rpc.RegisterName(name, s)
37
39
  }
38
40
 
41
+ // Start launches the server.
39
42
  func (q *Quartz) Start() {
40
43
  // The Ruby gem sets this environment variable for us.
41
44
  socketPath := "/tmp/quartz.socket"
@@ -67,6 +70,10 @@ func (q *Quartz) Start() {
67
70
  for {
68
71
  conn, err := listener.Accept()
69
72
  if err != nil {
73
+ // The connection was closed by a signal.
74
+ if strings.Contains(err.Error(), "use of closed network connection") {
75
+ return
76
+ }
70
77
  panic(err)
71
78
  }
72
79
  go jsonrpc.ServeConn(conn)
@@ -10,7 +10,8 @@ class Quartz::GoProcess
10
10
 
11
11
  def initialize(opts)
12
12
  @seed = SecureRandom.hex
13
- @socket_path = "/tmp/quartz_#{seed}.sock"
13
+ socket_dir = opts.fetch(:socket_dir) { '/tmp' }
14
+ @socket_path = File.join(socket_dir, "quartz_#{seed}.sock")
14
15
  ENV['QUARTZ_SOCKET'] = @socket_path
15
16
 
16
17
  if opts[:file_path]
data/quartz.gemspec CHANGED
@@ -2,18 +2,18 @@
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 0.3.0 ruby lib
5
+ # stub: quartz 1.0.0 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
- s.name = "quartz"
9
- s.version = "0.3.0"
8
+ s.name = "quartz".freeze
9
+ s.version = "1.0.0"
10
10
 
11
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
- s.require_paths = ["lib"]
13
- s.authors = ["David Huie"]
14
- s.date = "2015-04-28"
15
- s.description = "A gem for calling Go code from Ruby"
16
- s.email = "dahuie@gmail.com"
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib".freeze]
13
+ s.authors = ["David Huie".freeze]
14
+ s.date = "2018-06-06"
15
+ s.description = "A gem for calling Go code from Ruby".freeze
16
+ s.email = "dahuie@gmail.com".freeze
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE.txt",
19
19
  "README.md"
@@ -52,33 +52,33 @@ Gem::Specification.new do |s|
52
52
  "spec/spec_helper.rb",
53
53
  "spec/test.go"
54
54
  ]
55
- s.homepage = "http://github.com/DavidHuie/quartz"
56
- s.licenses = ["MIT"]
57
- s.rubygems_version = "2.4.3"
58
- s.summary = "A gem for calling Go code from Ruby"
55
+ s.homepage = "http://github.com/DavidHuie/quartz".freeze
56
+ s.licenses = ["MIT".freeze]
57
+ s.rubygems_version = "2.7.6".freeze
58
+ s.summary = "A gem for calling Go code from Ruby".freeze
59
59
 
60
60
  if s.respond_to? :specification_version then
61
61
  s.specification_version = 4
62
62
 
63
63
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
64
- s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
65
- s.add_development_dependency(%q<rspec>, ["~> 3.1"])
66
- s.add_development_dependency(%q<ruby-prof>, ["~> 0.15"])
67
- s.add_development_dependency(%q<simplecov>, ["~> 0.9"])
68
- s.add_development_dependency(%q<multi_json>, ["~> 1.4"])
64
+ s.add_runtime_dependency(%q<multi_json>.freeze, ["~> 1.13"])
65
+ s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.3"])
66
+ s.add_development_dependency(%q<rspec>.freeze, ["~> 3.7"])
67
+ s.add_development_dependency(%q<ruby-prof>.freeze, ["~> 0.17"])
68
+ s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.16"])
69
69
  else
70
- s.add_dependency(%q<jeweler>, ["~> 2.0"])
71
- s.add_dependency(%q<rspec>, ["~> 3.1"])
72
- s.add_dependency(%q<ruby-prof>, ["~> 0.15"])
73
- s.add_dependency(%q<simplecov>, ["~> 0.9"])
74
- s.add_dependency(%q<multi_json>, ["~> 1.4"])
70
+ s.add_dependency(%q<multi_json>.freeze, ["~> 1.13"])
71
+ s.add_dependency(%q<jeweler>.freeze, ["~> 2.3"])
72
+ s.add_dependency(%q<rspec>.freeze, ["~> 3.7"])
73
+ s.add_dependency(%q<ruby-prof>.freeze, ["~> 0.17"])
74
+ s.add_dependency(%q<simplecov>.freeze, ["~> 0.16"])
75
75
  end
76
76
  else
77
- s.add_dependency(%q<jeweler>, ["~> 2.0"])
78
- s.add_dependency(%q<rspec>, ["~> 3.1"])
79
- s.add_dependency(%q<ruby-prof>, ["~> 0.15"])
80
- s.add_dependency(%q<simplecov>, ["~> 0.9"])
81
- s.add_dependency(%q<multi_json>, ["~> 1.4"])
77
+ s.add_dependency(%q<multi_json>.freeze, ["~> 1.13"])
78
+ s.add_dependency(%q<jeweler>.freeze, ["~> 2.3"])
79
+ s.add_dependency(%q<rspec>.freeze, ["~> 3.7"])
80
+ s.add_dependency(%q<ruby-prof>.freeze, ["~> 0.17"])
81
+ s.add_dependency(%q<simplecov>.freeze, ["~> 0.16"])
82
82
  end
83
83
  end
84
84
 
@@ -34,6 +34,25 @@ describe Quartz::GoProcess do
34
34
  File.delete(temp_file)
35
35
  end
36
36
 
37
+ context 'when custom socket directory is used' do
38
+
39
+ before { Dir.mkdir(socket_dir) unless File.directory?(socket_dir) }
40
+
41
+ let(:socket_dir) { '/tmp/x' }
42
+ let(:process) { Quartz::GoProcess.new(file_path: 'spec/test.go', socket_dir: socket_dir) }
43
+
44
+ it 'works with custom socket directory' do
45
+ expect(File.exists?(process.socket_path)).to be_truthy
46
+ process.cleanup
47
+ expect(File.exists?(process.socket_path)).to be_falsey
48
+ end
49
+
50
+ it 'creates the socket in the socket dir' do
51
+ expect(process.socket_path).to match(/^#{socket_dir}\/quartz_[a-f\d]+\.sock/)
52
+ end
53
+
54
+ end
55
+
37
56
  describe '.cleanup' do
38
57
 
39
58
  context 'files' do
metadata CHANGED
@@ -1,85 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quartz
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Huie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-28 00:00:00.000000000 Z
11
+ date: 2018-06-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: jeweler
14
+ name: multi_json
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
20
- type: :development
19
+ version: '1.13'
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.0'
26
+ version: '1.13'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rspec
28
+ name: jeweler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.1'
33
+ version: '2.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.1'
40
+ version: '2.3'
41
41
  - !ruby/object:Gem::Dependency
42
- name: ruby-prof
42
+ name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.15'
47
+ version: '3.7'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.15'
54
+ version: '3.7'
55
55
  - !ruby/object:Gem::Dependency
56
- name: simplecov
56
+ name: ruby-prof
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0.9'
61
+ version: '0.17'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.9'
68
+ version: '0.17'
69
69
  - !ruby/object:Gem::Dependency
70
- name: multi_json
70
+ name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.4'
75
+ version: '0.16'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.4'
82
+ version: '0.16'
83
83
  description: A gem for calling Go code from Ruby
84
84
  email: dahuie@gmail.com
85
85
  executables: []
@@ -140,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
140
  version: '0'
141
141
  requirements: []
142
142
  rubyforge_project:
143
- rubygems_version: 2.4.3
143
+ rubygems_version: 2.7.6
144
144
  signing_key:
145
145
  specification_version: 4
146
146
  summary: A gem for calling Go code from Ruby