wref 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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
-