hustle 0.0.5 → 0.0.6

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: 8bede7b90ce5b7f0ce331158167b2dcf894681a8
4
- data.tar.gz: dd74a082c67416a7b99708ec72d51b50310489b0
3
+ metadata.gz: f677c8b9125928a97fca3ecdf0503266168a650f
4
+ data.tar.gz: feae1ecf4c817842635ac2e57e7d5b413f6f36c2
5
5
  SHA512:
6
- metadata.gz: 80e458ab378dbad7fac515e6c9205699c9029ed5f146f6eaa56897763ec98343aa3e16cf01bf783a0eeafc2920101c9211a4d1aba0fee0755b0fb91e8ea0735b
7
- data.tar.gz: 4cbca72cfb4a34733f2dd19bb80773031714d9b82ec23dddce2677bc9a9a3e69a5b707c2bb95f4d2d41b3a3938d22b1d5b1b1a7ec88e88bbfb0c3f0edd265d7e
6
+ metadata.gz: 03dfd4dff8b71fbe0f5f994d1dfd5151cdc1e3b580e235333a094b9f819721a44d8359932bd8b8412bc2e55c2ded6718f23aad93ee1c5b0df206cb68874e84aa
7
+ data.tar.gz: e0a093a91ef31efec092255916e4d846d98c69a89d194dedec436e9708744fe6e083f9035cc565167775bda2b9660dffe07d7007a14230a20ed2a1d6129adeb9
@@ -33,11 +33,11 @@ module Hustle
33
33
  end
34
34
  end
35
35
 
36
- def go(callback: -> (val) {}, &block)
36
+ def go(context: {}, callback: -> (val) {}, &block)
37
37
  start_drb
38
38
  sleep 0 while active_runners.size >= cores.size
39
39
  uri = "druby://127.0.0.1:#{random_port}"
40
- runner = Runner.new(uri)
40
+ runner = Runner.new(uri, context: context)
41
41
  runner.start_remote_instance
42
42
  synchronize do
43
43
  active_runners[runner.pid] = runner
@@ -1,14 +1,15 @@
1
- require "sourcify"
1
+ require "method_source"
2
2
 
3
3
  module Hustle
4
4
  class Runner
5
- attr_reader :uri, :pid, :value
5
+ attr_reader :uri, :pid, :context
6
6
  attr_accessor :callback_thread
7
7
 
8
8
  # methods to be run on the local instance
9
9
 
10
- def initialize(uri)
10
+ def initialize(uri, context: {})
11
11
  @uri = uri
12
+ @context = context
12
13
  end
13
14
 
14
15
  def remote_instance
@@ -41,10 +42,17 @@ module Hustle
41
42
  remote_instance.stop
42
43
  end
43
44
 
44
- def run_remote(&block)
45
+ def run_remote(context: {}, &block)
45
46
  sleep 0 while !remote_instance_ready?
46
- source = block.to_source(strip_enclosure: true)
47
- remote_instance.run source
47
+ code_string = proc_to_string(block)
48
+ remote_instance.run code_string
49
+ end
50
+
51
+ def proc_to_string(proc)
52
+ code = proc.source
53
+ start = code.index(/(?<=\{| do)/)
54
+ finish = code.rindex(/\}|end/) - 1
55
+ code[start..finish].strip
48
56
  end
49
57
 
50
58
  # methods to be run on the remote instance
@@ -53,9 +61,9 @@ module Hustle
53
61
  DRb.stop_service
54
62
  end
55
63
 
56
- def run(source)
64
+ def run(code_string)
57
65
  begin
58
- eval source
66
+ eval code_string, binding
59
67
  rescue Exception => e
60
68
  e
61
69
  end
@@ -1,3 +1,3 @@
1
1
  module Hustle
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -54,5 +54,23 @@ class HustleTest < MicroTest::Test
54
54
  Hustle.wait
55
55
  end
56
56
 
57
+ test "context passing" do
58
+ data = { a: 0, b: 1 }
59
+
60
+ asserts = -> (value) do
61
+ assert value.is_a?(Hash)
62
+ assert value[:a] == 0
63
+ assert value[:b] == 3
64
+ assert data.object_id != value.object_id
65
+ end
66
+
67
+ Hustle.go context: data, callback: asserts do
68
+ context[:b] = 3
69
+ context
70
+ end
71
+
72
+ Hustle.wait
73
+ end
74
+
57
75
  end
58
76
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hustle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Hopkins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-20 00:00:00.000000000 Z
11
+ date: 2014-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: os
@@ -25,33 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.9.6
27
27
  - !ruby/object:Gem::Dependency
28
- name: ParseTree
28
+ name: method_source
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 3.0.8
33
+ version: 0.8.2
34
34
  type: :runtime
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.0.8
41
- - !ruby/object:Gem::Dependency
42
- name: sourcify
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: 0.5.0
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: 0.5.0
40
+ version: 0.8.2
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: bundler
57
43
  requirement: !ruby/object:Gem::Requirement