quartz 0.2.1 → 0.2.2

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: 966959af5eccc12fdaeebb8f89c9b1d0b0745ee4
4
- data.tar.gz: 5bd071aa23710e57e982417cf3f88bd6027ff581
3
+ metadata.gz: a9b32688049786025781cf7243a2cab933d83d0d
4
+ data.tar.gz: ca72a56ea8e7098daf9a05560353e0982c3c67b4
5
5
  SHA512:
6
- metadata.gz: c685ac6dfa5a3f425f6af8b46700cbf72abb2ba9b4e3dd832cbbb68ac92e633c498142d7d75e89cbcff085d3d073207aad3f13e898fa6ab3cd698d6efed5fb5e
7
- data.tar.gz: f24332c3ca02f128a26d4b21890223a3ccc6a032eb5813c3286f04bd58fe4a109f5c92b90f8084254da91685d4902b252ee4ae98bddcde76175cab3a8bdb6de0
6
+ metadata.gz: 979ad4c2465c424464c0f40ac89f0671959ec27f6d91cbfe45099b409fa9d95ae45a325d5a3a230c69066d203a29f5d0281e85747f639539c1b74846dceec52d
7
+ data.tar.gz: 86fad9d659b2912ba1bab12afe798f7eb44477062737a770e69db3865ad5351428da0bbf1c00edb2f09b71dac4d5bf772a45747991c607ca9a0cad05af2b2e28
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
data/go/quartz/quartz.go CHANGED
@@ -102,8 +102,10 @@ func (q *Quartz) Call(args *CallArgs, response *interface{}) error {
102
102
  unmarshallerValue.Call([]reflect.Value{methodArgsValue, argStructPointer})
103
103
 
104
104
  // Call the method
105
- // TODO: check for errors
106
- method.Func.Call([]reflect.Value{structValue, argStruct, responseValuePointer})
105
+ err := method.Func.Call([]reflect.Value{structValue, argStruct, responseValuePointer})
106
+ if !err[0].IsNil() {
107
+ return err[0].Interface().(error)
108
+ }
107
109
 
108
110
  // Set this method's response value
109
111
  rpcResponse := reflect.Indirect(responseValuePointer)
@@ -92,14 +92,20 @@ class Quartz::GoProcess
92
92
  end
93
93
 
94
94
  def cleanup
95
- Process.kill('SIGTERM', pid)
96
- Process.wait(pid)
97
- File.delete(@temp_file_path) if @temp_file_path
98
- self.class.processes.delete(self)
95
+ unless @killed_go_process
96
+ Process.kill('SIGTERM', pid)
97
+ Process.wait(pid)
98
+ @killed_go_process = true
99
+ end
100
+
101
+ if @temp_file_path && File.exists?(@temp_file_path)
102
+ File.delete(@temp_file_path)
103
+ end
99
104
  end
100
105
 
101
106
  def self.cleanup
102
- processes.each { |p| p.cleanup }
107
+ @processes.each(&:cleanup)
108
+ @processes = []
103
109
  end
104
110
 
105
111
  end
@@ -33,7 +33,7 @@ class Quartz::GoStruct
33
33
  response = @process.call(@struct_name, method_name, args)
34
34
 
35
35
  if response['error']
36
- raise "Error calling #{method_name}: #{response['error']}"
36
+ raise Quartz::ResponseError.new(response['error'])
37
37
  end
38
38
 
39
39
  response['result']
data/lib/quartz.rb CHANGED
@@ -2,9 +2,16 @@ require 'json'
2
2
  require 'socket'
3
3
 
4
4
  module Quartz
5
-
5
+ class ResponseError < StandardError; end
6
6
  end
7
7
 
8
8
  require 'quartz/go_process'
9
9
  require 'quartz/go_struct'
10
10
  require 'quartz/client'
11
+
12
+ # Check if go is installed
13
+ go_exists = ENV['PATH'].split(File::PATH_SEPARATOR).any? do |directory|
14
+ File.exist?(File.join(directory, 'go'))
15
+ end
16
+
17
+ raise 'Go not installed' unless go_exists
data/quartz.gemspec CHANGED
@@ -2,15 +2,16 @@
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.2.1 ruby lib
5
+ # stub: quartz 0.2.2 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "quartz"
9
- s.version = "0.2.1"
9
+ s.version = "0.2.2"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
12
13
  s.authors = ["David Huie"]
13
- s.date = "2014-06-17"
14
+ s.date = "2014-06-23"
14
15
  s.description = "A gem for calling Go code from Ruby"
15
16
  s.email = "dahuie@gmail.com"
16
17
  s.extra_rdoc_files = [
@@ -42,8 +43,7 @@ Gem::Specification.new do |s|
42
43
  ]
43
44
  s.homepage = "http://github.com/DavidHuie/quartz"
44
45
  s.licenses = ["MIT"]
45
- s.require_paths = ["lib"]
46
- s.rubygems_version = "2.1.11"
46
+ s.rubygems_version = "2.2.2"
47
47
  s.summary = "A gem for calling Go code from Ruby"
48
48
 
49
49
  if s.respond_to? :specification_version then
@@ -9,7 +9,7 @@ describe Quartz::GoProcess do
9
9
  context 'with a go file' do
10
10
 
11
11
  it 'pulls metadata' do
12
- process.get_metadata.should eq({"adder"=>{"NameToMethodMetadata"=>{"Add"=>{"ArgumentToType"=>{"A"=>"int", "B"=>"int"}}}}})
12
+ process.get_metadata.should eq("adder" => {"NameToMethodMetadata"=>{"Add"=>{"ArgumentToType"=>{"A"=>"int", "B"=>"int"}}, "AddError"=>{"ArgumentToType"=>{"A"=>"int", "B"=>"int"}}}})
13
13
  end
14
14
 
15
15
  end
@@ -51,7 +51,7 @@ describe Quartz::GoProcess do
51
51
  it "it kills child processes" do
52
52
  File.exists?(process.temp_file_path).should be_true
53
53
  process.cleanup
54
- File.exists?(process.temp_file_path).should be_false
54
+ $?.exited?.should be_true
55
55
  end
56
56
 
57
57
  end
@@ -8,7 +8,9 @@ describe Quartz::GoStruct do
8
8
 
9
9
  let(:struct) do
10
10
  Quartz::GoStruct.new("adder",
11
- {"NameToMethodMetadata"=>{"Add"=>{"ArgumentToType"=>{"A"=>"int", "B"=>"int"}}}}, process)
11
+ {"NameToMethodMetadata"=>{"Add"=>{"ArgumentToType"=>{"A"=>"int", "B"=>"int"}},
12
+ "AddError"=>{"ArgumentToType"=>{"A"=>"int", "B"=>"int"}}
13
+ }}, process)
12
14
  end
13
15
 
14
16
  it 'is able to call a struct' do
@@ -16,6 +18,12 @@ describe Quartz::GoStruct do
16
18
  response.should eq({'X' => 6})
17
19
  end
18
20
 
21
+ it 'raises an exception when an error is returned' do
22
+ expect do
23
+ struct.call('AddError', { 'A' => 5, 'B' => 6 })
24
+ end.to raise_error(Quartz::ResponseError)
25
+ end
26
+
19
27
  end
20
28
 
21
29
  end
data/spec/test.go CHANGED
@@ -1,6 +1,8 @@
1
1
  package main
2
2
 
3
3
  import (
4
+ "errors"
5
+
4
6
  "github.com/DavidHuie/quartz/go/quartz"
5
7
  )
6
8
 
@@ -20,6 +22,10 @@ func (t *Test) Add(args Args, response *Response) error {
20
22
  return nil
21
23
  }
22
24
 
25
+ func (t *Test) AddError(args Args, response *Response) error {
26
+ return errors.New("Adding error")
27
+ }
28
+
23
29
  func main() {
24
30
  a := &Test{}
25
31
  quartz.RegisterName("adder", a)
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quartz
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Huie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-17 00:00:00.000000000 Z
11
+ date: 2014-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 2.8.0
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.8.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: jeweler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 2.0.1
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
40
  version: 2.0.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: simplecov
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: 0.8.2
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
54
  version: 0.8.2
55
55
  description: A gem for calling Go code from Ruby
@@ -60,8 +60,8 @@ extra_rdoc_files:
60
60
  - LICENSE.txt
61
61
  - README.md
62
62
  files:
63
- - .rspec
64
- - .travis.yml
63
+ - ".rspec"
64
+ - ".travis.yml"
65
65
  - Gemfile
66
66
  - Gemfile.lock
67
67
  - LICENSE.txt
@@ -91,17 +91,17 @@ require_paths:
91
91
  - lib
92
92
  required_ruby_version: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  required_rubygems_version: !ruby/object:Gem::Requirement
98
98
  requirements:
99
- - - '>='
99
+ - - ">="
100
100
  - !ruby/object:Gem::Version
101
101
  version: '0'
102
102
  requirements: []
103
103
  rubyforge_project:
104
- rubygems_version: 2.1.11
104
+ rubygems_version: 2.2.2
105
105
  signing_key:
106
106
  specification_version: 4
107
107
  summary: A gem for calling Go code from Ruby