niftie-register 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/lib/register.rb +22 -0
  2. data/register.gemspec +11 -0
  3. metadata +54 -0
data/lib/register.rb ADDED
@@ -0,0 +1,22 @@
1
+ require 'thread'
2
+
3
+ module Register
4
+ MUTEX = Mutex.new
5
+ STORE = {}
6
+
7
+ def self.append_features(base)
8
+
9
+ def base.register(key, obj)
10
+ Register::MUTEX.synchronize do
11
+ raise(ArgumentError, "key #{key} is already in use") if Register::STORE[self].key?(key)
12
+ (Register::STORE[self] ||= {})[key] = obj
13
+ end
14
+ end
15
+
16
+ def base.retrieve(key)
17
+ store = Register::STORE[self]
18
+ store[key] if store
19
+ end
20
+
21
+ end
22
+ end
data/register.gemspec ADDED
@@ -0,0 +1,11 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'register'
3
+ s.homepage = 'http://github.com/niftie/register'
4
+ s.author = 'Nicolas Steenlant'
5
+ s.email = 'nicolas.steenlant@gmail.com'
6
+ s.version = '0.2.0'
7
+ s.date = '2008-11-23'
8
+ s.summary = ''
9
+ s.files = ['register.gemspec', 'lib/register.rb']
10
+ s.require_path = 'lib'
11
+ end
metadata ADDED
@@ -0,0 +1,54 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: niftie-register
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Nicolas Steenlant
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-11-23 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email: nicolas.steenlant@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - register.gemspec
26
+ - lib/register.rb
27
+ has_rdoc: false
28
+ homepage: http://github.com/niftie/register
29
+ post_install_message:
30
+ rdoc_options: []
31
+
32
+ require_paths:
33
+ - lib
34
+ required_ruby_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: "0"
39
+ version:
40
+ required_rubygems_version: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: "0"
45
+ version:
46
+ requirements: []
47
+
48
+ rubyforge_project:
49
+ rubygems_version: 1.2.0
50
+ signing_key:
51
+ specification_version: 2
52
+ summary: ""
53
+ test_files: []
54
+