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.
Files changed (5) hide show
  1. data/Gemfile.lock +3 -3
  2. data/VERSION +1 -1
  3. data/lib/wref.rb +24 -2
  4. data/wref.gemspec +8 -8
  5. metadata +65 -53
@@ -8,9 +8,9 @@ GEM
8
8
  git (>= 1.2.5)
9
9
  rake
10
10
  rdoc
11
- json (1.7.3)
12
- rake (0.9.2.2)
13
- rdoc (3.12)
11
+ json (1.7.7)
12
+ rake (10.0.3)
13
+ rdoc (3.12.1)
14
14
  json (~> 1.4)
15
15
  rspec (2.8.0)
16
16
  rspec-core (~> 2.8.0)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.6
@@ -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 RUBY_ENGINE == "jruby"
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 RUBY_ENGINE == "jruby"
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?
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{wref}
8
- s.version = "0.0.5"
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 = %q{2012-07-24}
13
- s.description = %q{Lightweight weak reference and weak hash that works in 1.9 and JRuby.}
14
- s.email = %q{k@spernj.org}
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 = %q{http://github.com/kaspernj/wref}
33
+ s.homepage = "http://github.com/kaspernj/wref"
34
34
  s.licenses = ["MIT"]
35
35
  s.require_paths = ["lib"]
36
- s.rubygems_version = %q{1.6.2}
37
- s.summary = %q{Weak references and weak hash for Ruby}
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
- date: 2012-07-24 00:00:00 +02:00
14
- default_executable:
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: &id001 !ruby/object:Gem::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: *id001
27
- - !ruby/object:Gem::Dependency
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: &id002 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
30
33
  none: false
31
- requirements:
34
+ requirements:
32
35
  - - ~>
33
- - !ruby/object:Gem::Version
34
- version: "3.12"
36
+ - !ruby/object:Gem::Version
37
+ version: '3.12'
35
38
  type: :development
36
39
  prerelease: false
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
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: &id003 !ruby/object:Gem::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: *id003
49
- - !ruby/object:Gem::Dependency
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: &id004 !ruby/object:Gem::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: *id004
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
- hash: 1899504982320509212
97
- segments:
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ segments:
98
112
  - 0
99
- version: "0"
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: "0"
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
106
120
  requirements: []
107
-
108
121
  rubyforge_project:
109
- rubygems_version: 1.6.2
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
-