ninjudd-deferrable 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,37 @@
1
+ = Deferrable
2
+
3
+ Deferrable provides a simple way to defer execution of a block without starting another
4
+ process or thread.
5
+
6
+ == Usage:
7
+
8
+ class Foo
9
+ include Deferrable
10
+
11
+ def bar(opts = {})
12
+ deferred do
13
+ # do something later
14
+ end
15
+
16
+ now_and_later do
17
+ # do something now and when deferred blocks are executed
18
+ # this could be useful for cache invalidations... yum
19
+ end
20
+ end
21
+
22
+ def later
23
+ complete_deferred # executes all deferred blocks in order
24
+ end
25
+
26
+ def nevermind
27
+ clear_deferred # don't execute the deferred blocks after all
28
+ end
29
+ end
30
+
31
+ == Install:
32
+
33
+ sudo gem install ninjudd-deferrable -s http://gems.github.com
34
+
35
+ == License:
36
+
37
+ Copyright (c) 2009 Justin Balthrop, Geni.com; Published under The MIT License, see LICENSE
@@ -0,0 +1,4 @@
1
+ ---
2
+ :patch: 0
3
+ :major: 0
4
+ :minor: 1
@@ -0,0 +1,29 @@
1
+ module Deferrable
2
+ def deferred(enabled = true, &block)
3
+ if enabled
4
+ deferred_blocks << block
5
+ else
6
+ block.call()
7
+ end
8
+ end
9
+
10
+ def now_and_later(&block)
11
+ deferred(false, &block)
12
+ deferred(true, &block)
13
+ end
14
+
15
+ def complete_deferred
16
+ deferred_blocks.each {|block| block.call}
17
+ clear_deferred
18
+ end
19
+
20
+ def clear_deferred
21
+ deferred_blocks.clear
22
+ end
23
+
24
+ private
25
+
26
+ def deferred_blocks
27
+ @deferred_blocks ||= []
28
+ end
29
+ end
@@ -0,0 +1,7 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class DeferrableTest < Test::Unit::TestCase
4
+ should "probably rename this file and start testing for real" do
5
+ flunk "hey buddy, you should probably rename this file and start testing for real"
6
+ end
7
+ end
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+ require 'mocha'
5
+
6
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
7
+ require 'deferrable'
8
+
9
+ class Test::Unit::TestCase
10
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ninjudd-deferrable
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Justin Balthrop
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-04-14 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Simple mechanism for deferred execution of a block
17
+ email: code@justinbalthrop
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - README.rdoc
26
+ - VERSION.yml
27
+ - lib/deferrable.rb
28
+ - test/deferrable_test.rb
29
+ - test/test_helper.rb
30
+ has_rdoc: true
31
+ homepage: http://github.com/ninjudd/deferrable
32
+ post_install_message:
33
+ rdoc_options:
34
+ - --inline-source
35
+ - --charset=UTF-8
36
+ require_paths:
37
+ - lib
38
+ required_ruby_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: "0"
43
+ version:
44
+ required_rubygems_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: "0"
49
+ version:
50
+ requirements: []
51
+
52
+ rubyforge_project:
53
+ rubygems_version: 1.2.0
54
+ signing_key:
55
+ specification_version: 2
56
+ summary: Simple mechanism for deferred execution of a block
57
+ test_files: []
58
+