barney 0.2.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +5 -0
- data/README.md +3 -2
- data/lib/barney/share.rb +15 -8
- data/lib/barney.rb +1 -1
- metadata +5 -5
data/ChangeLog
CHANGED
data/README.md
CHANGED
@@ -38,14 +38,15 @@ Okay, now that we've got that out of the way, let's see what using Barney is lik
|
|
38
38
|
|
39
39
|
puts message * $times # output is 'boobooboo'.
|
40
40
|
|
41
|
-
|
41
|
+
## Documentation
|
42
42
|
|
43
43
|
**API**
|
44
44
|
|
45
|
+
* [master (git)](http://rubydoc.info/github/robgleeson/Barney/master/)
|
45
46
|
* [0.2.0](http://rubydoc.info/gems/barney/0.2.0)
|
46
47
|
* [0.1.0](http://rubydoc.info/gems/barney/0.1.0)
|
47
48
|
|
48
|
-
|
49
|
+
## Install
|
49
50
|
|
50
51
|
gem install barney
|
51
52
|
|
data/lib/barney/share.rb
CHANGED
@@ -5,9 +5,9 @@ module Barney
|
|
5
5
|
@mutex = Mutex.new
|
6
6
|
|
7
7
|
class << self
|
8
|
-
# Serves as a temporary holder for the latest value read from the child process.
|
9
|
-
# @api private
|
10
|
-
# @return [
|
8
|
+
# Serves as a temporary holder for the latest value read from the child process.
|
9
|
+
# @api private
|
10
|
+
# @return [Object] Returns Object or subclass of.
|
11
11
|
attr_accessor :value
|
12
12
|
|
13
13
|
# Serves as a lock when {Barney::Share.value Barney::Share.value} is being accessed by {Barney::Share#synchronize}
|
@@ -20,6 +20,10 @@ module Barney
|
|
20
20
|
# @return [Array<Symbol>]
|
21
21
|
attr_reader :shared
|
22
22
|
def shared; @shared.keys; end
|
23
|
+
|
24
|
+
# Serves as a method that tells you the Process ID of the last forked child process.
|
25
|
+
# @return [Fixnum] Returns the Process ID as a Fixnum.
|
26
|
+
attr_reader :pid
|
23
27
|
|
24
28
|
# @return [Barney::Share] Returns an instance of Barney::Share.
|
25
29
|
def initialize
|
@@ -32,7 +36,7 @@ module Barney
|
|
32
36
|
# @return [Array<Symbol>] Returns a list of all variables that are being shared.
|
33
37
|
def share *variables
|
34
38
|
variables.map(&:to_sym).each do |variable|
|
35
|
-
@shared.store variable, IO.pipe
|
39
|
+
@shared.store variable, IO.pipe
|
36
40
|
end
|
37
41
|
@shared.keys
|
38
42
|
end
|
@@ -59,16 +63,19 @@ module Barney
|
|
59
63
|
def fork &blk
|
60
64
|
raise ArgumentError, "A block or Proc object is expected" unless block_given?
|
61
65
|
|
62
|
-
|
63
|
-
|
66
|
+
share *@shared.keys if @pid
|
67
|
+
|
68
|
+
@context = blk.binding
|
69
|
+
@pid = Kernel.fork do
|
64
70
|
blk.call
|
65
|
-
@shared.each do |variable, pipes|
|
71
|
+
@shared.each do |variable, pipes|
|
66
72
|
pipes[0].close
|
67
73
|
pipes[1].write Marshal.dump(eval("#{variable}", @context))
|
68
74
|
pipes[1].close
|
69
75
|
end
|
70
76
|
end
|
71
|
-
|
77
|
+
|
78
|
+
@pid
|
72
79
|
end
|
73
80
|
|
74
81
|
# Serves as a method that synchronizes data between the parent and child process.
|
data/lib/barney.rb
CHANGED
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 3
|
8
|
+
- 1
|
9
|
+
version: 0.3.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Robert Gleeson
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-01-
|
17
|
+
date: 2011-01-16 00:00:00 +00:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -67,8 +67,8 @@ extra_rdoc_files: []
|
|
67
67
|
files:
|
68
68
|
- README.md
|
69
69
|
- ChangeLog
|
70
|
-
- lib/barney.rb
|
71
70
|
- lib/barney/share.rb
|
71
|
+
- lib/barney.rb
|
72
72
|
has_rdoc: true
|
73
73
|
homepage: http://github.com/robgleeson/barney
|
74
74
|
licenses: []
|