ninjudd-deferrable 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
+