ifuture 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
data/README.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # ifuture
2
+ [![Build Status](https://secure.travis-ci.org/Havenwood/ifuture.png?branch=master)](http://travis-ci.org/Havenwood/ifuture)
2
3
 
3
- An implementation of Futures for Ruby using process forks with IChannel.
4
+ An implementation of Futures for Ruby using process forks with [IChannel](https://github.com/robgleeson/ichannel).
4
5
 
5
- The Future starts running right away, but isn't blocking because it runs in its own Process fork. If we wait until the Future is ready before asking for its value, the value will be returned right away. If we ask early, it blocks until delivery.
6
+ The Future starts running right away, but isn't blocking because it runs in its own fork and uses IChannel to communicate with the parent Process. This allows multithreading with GIL contraints. If the value is asked for and it is ready, it will be returned right away. If the value is asked for early, the Future blocks until delivery.
6
7
 
7
8
  ## Usage
8
9
 
data/Rakefile ADDED
@@ -0,0 +1,5 @@
1
+ task default: [:test]
2
+
3
+ task :test do
4
+ ruby 'test/ifuture_test.rb'
5
+ end
data/ifuture.gemspec CHANGED
@@ -16,5 +16,8 @@ Gem::Specification.new do |gem|
16
16
  gem.require_paths = ['lib']
17
17
 
18
18
  gem.add_development_dependency 'ichannel'
19
+ gem.add_development_dependency 'minitest'
20
+ gem.add_development_dependency 'rake'
21
+
19
22
  gem.add_runtime_dependency 'ichannel'
20
23
  end
@@ -1,3 +1,3 @@
1
1
  class IFuture
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
data/test/helper.rb ADDED
@@ -0,0 +1,3 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest/pride'
3
+ require 'ifuture'
@@ -0,0 +1,39 @@
1
+ require_relative 'helper.rb'
2
+
3
+ describe IFuture do
4
+ before do
5
+ @future = IFuture.new { sleep 0.25; 'peppermint' }
6
+ end
7
+
8
+ describe 'before the value is ready' do
9
+ describe 'when asked if ready?' do
10
+ it 'will respond false' do
11
+ refute @future.ready?
12
+ end
13
+ end
14
+
15
+ describe 'when asked for value' do
16
+ it 'will block then return value' do
17
+ assert_equal @future.value, "peppermint"
18
+ end
19
+ end
20
+ end
21
+
22
+ describe 'after the value is ready' do
23
+ before do
24
+ sleep 0.5
25
+ end
26
+
27
+ describe 'when asked if ready?' do
28
+ it 'will respond true' do
29
+ assert @future.ready?
30
+ end
31
+ end
32
+
33
+ describe 'when asked for value' do
34
+ it 'will return value' do
35
+ assert_equal @future.value, "peppermint"
36
+ end
37
+ end
38
+ end
39
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ifuture
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-30 00:00:00.000000000 Z
12
+ date: 2012-12-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ichannel
@@ -27,6 +27,38 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: minitest
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
30
62
  - !ruby/object:Gem::Dependency
31
63
  name: ichannel
32
64
  requirement: !ruby/object:Gem::Requirement
@@ -51,12 +83,16 @@ extensions: []
51
83
  extra_rdoc_files: []
52
84
  files:
53
85
  - .gitignore
86
+ - .travis.yml
54
87
  - Gemfile
55
88
  - LICENSE.txt
56
89
  - README.md
90
+ - Rakefile
57
91
  - ifuture.gemspec
58
92
  - lib/ifuture.rb
59
93
  - lib/ifuture/version.rb
94
+ - test/helper.rb
95
+ - test/ichannel_test.rb
60
96
  homepage: https://github.com/Havenwood
61
97
  licenses: []
62
98
  post_install_message: