wref 0.0.5 → 0.0.6
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.
- data/Gemfile.lock +3 -3
- data/VERSION +1 -1
- data/lib/wref.rb +24 -2
- data/wref.gemspec +8 -8
- metadata +65 -53
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.6
|
data/lib/wref.rb
CHANGED
@@ -21,9 +21,15 @@ class Wref
|
|
21
21
|
#Returns the object-ID which is used to look up the ObjectSpace (if not running JRuby).
|
22
22
|
attr_reader :id
|
23
23
|
|
24
|
+
#This can be used to debug the behavior of the library.
|
25
|
+
USE_NATIVE_RUBY_IMPLEMENTATION = false
|
26
|
+
|
24
27
|
#Initializes various variables.
|
25
28
|
def initialize(obj)
|
26
|
-
if
|
29
|
+
if USE_NATIVE_RUBY_IMPLEMENTATION
|
30
|
+
require "weakref"
|
31
|
+
@weakref = WeakRef.new(obj)
|
32
|
+
elsif RUBY_ENGINE == "jruby"
|
27
33
|
@weakref = java.lang.ref.WeakReference.new(obj)
|
28
34
|
else
|
29
35
|
@id = obj.__id__
|
@@ -53,7 +59,14 @@ class Wref
|
|
53
59
|
# end
|
54
60
|
def get
|
55
61
|
begin
|
56
|
-
if
|
62
|
+
if USE_NATIVE_RUBY_IMPLEMENTATION
|
63
|
+
begin
|
64
|
+
return @weakref.__getobj__
|
65
|
+
rescue => e
|
66
|
+
raise Wref::Recycled if e.class.name == "RefError"
|
67
|
+
raise e
|
68
|
+
end
|
69
|
+
elsif RUBY_ENGINE == "jruby"
|
57
70
|
raise Wref::Recycled if !@weakref
|
58
71
|
obj = @weakref.get
|
59
72
|
|
@@ -84,6 +97,15 @@ class Wref
|
|
84
97
|
end
|
85
98
|
end
|
86
99
|
|
100
|
+
#The same as the normal 'get' but returns nil instead of raising Wref::Cycled-error.
|
101
|
+
def get!
|
102
|
+
begin
|
103
|
+
return self.get
|
104
|
+
rescue Wref::Recycled
|
105
|
+
return nil
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
87
109
|
#Returns true if the reference is still alive.
|
88
110
|
# print "The object still exists in memory." if wref.alive?
|
89
111
|
def alive?
|
data/wref.gemspec
CHANGED
@@ -4,14 +4,14 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.0.
|
7
|
+
s.name = "wref"
|
8
|
+
s.version = "0.0.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kasper Johansen"]
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
12
|
+
s.date = "2013-02-24"
|
13
|
+
s.description = "Lightweight weak reference and weak hash that works in 1.9 and JRuby."
|
14
|
+
s.email = "k@spernj.org"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE.txt",
|
17
17
|
"README.rdoc"
|
@@ -30,11 +30,11 @@ Gem::Specification.new do |s|
|
|
30
30
|
"spec/wref_spec.rb",
|
31
31
|
"wref.gemspec"
|
32
32
|
]
|
33
|
-
s.homepage =
|
33
|
+
s.homepage = "http://github.com/kaspernj/wref"
|
34
34
|
s.licenses = ["MIT"]
|
35
35
|
s.require_paths = ["lib"]
|
36
|
-
s.rubygems_version =
|
37
|
-
s.summary =
|
36
|
+
s.rubygems_version = "1.8.25"
|
37
|
+
s.summary = "Weak references and weak hash for Ruby"
|
38
38
|
|
39
39
|
if s.respond_to? :specification_version then
|
40
40
|
s.specification_version = 3
|
metadata
CHANGED
@@ -1,72 +1,88 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: wref
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.6
|
4
5
|
prerelease:
|
5
|
-
version: 0.0.5
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Kasper Johansen
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-02-24 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
17
15
|
name: rspec
|
18
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
18
|
+
requirements:
|
21
19
|
- - ~>
|
22
|
-
- !ruby/object:Gem::Version
|
20
|
+
- !ruby/object:Gem::Version
|
23
21
|
version: 2.8.0
|
24
22
|
type: :development
|
25
23
|
prerelease: false
|
26
|
-
version_requirements:
|
27
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 2.8.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
28
31
|
name: rdoc
|
29
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
30
33
|
none: false
|
31
|
-
requirements:
|
34
|
+
requirements:
|
32
35
|
- - ~>
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version:
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '3.12'
|
35
38
|
type: :development
|
36
39
|
prerelease: false
|
37
|
-
version_requirements:
|
38
|
-
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '3.12'
|
46
|
+
- !ruby/object:Gem::Dependency
|
39
47
|
name: bundler
|
40
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
41
49
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
45
53
|
version: 1.0.0
|
46
54
|
type: :development
|
47
55
|
prerelease: false
|
48
|
-
version_requirements:
|
49
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.0.0
|
62
|
+
- !ruby/object:Gem::Dependency
|
50
63
|
name: jeweler
|
51
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
52
65
|
none: false
|
53
|
-
requirements:
|
66
|
+
requirements:
|
54
67
|
- - ~>
|
55
|
-
- !ruby/object:Gem::Version
|
68
|
+
- !ruby/object:Gem::Version
|
56
69
|
version: 1.8.3
|
57
70
|
type: :development
|
58
71
|
prerelease: false
|
59
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.8.3
|
60
78
|
description: Lightweight weak reference and weak hash that works in 1.9 and JRuby.
|
61
79
|
email: k@spernj.org
|
62
80
|
executables: []
|
63
|
-
|
64
81
|
extensions: []
|
65
|
-
|
66
|
-
extra_rdoc_files:
|
82
|
+
extra_rdoc_files:
|
67
83
|
- LICENSE.txt
|
68
84
|
- README.rdoc
|
69
|
-
files:
|
85
|
+
files:
|
70
86
|
- .document
|
71
87
|
- .rspec
|
72
88
|
- Gemfile
|
@@ -79,36 +95,32 @@ files:
|
|
79
95
|
- spec/spec_helper.rb
|
80
96
|
- spec/wref_spec.rb
|
81
97
|
- wref.gemspec
|
82
|
-
has_rdoc: true
|
83
98
|
homepage: http://github.com/kaspernj/wref
|
84
|
-
licenses:
|
99
|
+
licenses:
|
85
100
|
- MIT
|
86
101
|
post_install_message:
|
87
102
|
rdoc_options: []
|
88
|
-
|
89
|
-
require_paths:
|
103
|
+
require_paths:
|
90
104
|
- lib
|
91
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
92
106
|
none: false
|
93
|
-
requirements:
|
94
|
-
- -
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
|
97
|
-
segments:
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
segments:
|
98
112
|
- 0
|
99
|
-
|
100
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
|
+
hash: -3186907571607769173
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
115
|
none: false
|
102
|
-
requirements:
|
103
|
-
- -
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version:
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
106
120
|
requirements: []
|
107
|
-
|
108
121
|
rubyforge_project:
|
109
|
-
rubygems_version: 1.
|
122
|
+
rubygems_version: 1.8.25
|
110
123
|
signing_key:
|
111
124
|
specification_version: 3
|
112
125
|
summary: Weak references and weak hash for Ruby
|
113
126
|
test_files: []
|
114
|
-
|