lspace 0.6 → 0.7

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/lib/lspace.rb CHANGED
@@ -65,7 +65,7 @@ class LSpace
65
65
  # Update the LSpace-variable with the given name.
66
66
  #
67
67
  # Bear in mind that any code using this LSpace will see this change, and consider
68
- # using {LSpace.with} instead to localize your changes.
68
+ # using {LSpace.with} or {LSpace.fork} instead to localize your changes.
69
69
  #
70
70
  # This method is mostly useful for setting up a new LSpace before any code is
71
71
  # using it, and has no effect on parent LSpaces.
@@ -76,6 +76,18 @@ class LSpace
76
76
  self.current = previous
77
77
  end
78
78
 
79
+ # Replace the current LSpace with a fork of it.
80
+ #
81
+ # Forking the Lspace means that values changed with LSpace#[]= no
82
+ # longer affect parent LSpaces.
83
+ #
84
+ # This should be used carefully - it may confuse around_filters,
85
+ # since they will see a different LSpace after the block is called
86
+ # than before.
87
+ def self.fork
88
+ self.current = LSpace.new({}, self.current)
89
+ end
90
+
79
91
  # Create a closure that will re-enter the current LSpace when the block is called.
80
92
  #
81
93
  # @example
data/lspace.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "lspace"
3
- s.version = "0.6"
3
+ s.version = "0.7"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.author = "Conrad Irwin"
6
6
  s.email = "conrad.irwin@gmail.com"
@@ -82,6 +82,30 @@ describe LSpace do
82
82
  end
83
83
  end
84
84
 
85
+ describe ".fork" do
86
+ it "should not propagate variable changes to the parent LSpace" do
87
+ LSpace.enter(@lspace) do
88
+ LSpace.fork
89
+ LSpace[:foo] = 5
90
+ LSpace[:foo].should == 5
91
+ end
92
+ @lspace[:foo].should be_nil
93
+ end
94
+
95
+ it "should show the new forked LSpace to around_filters after returning" do
96
+ @lspace.around_filter do |&block|
97
+ LSpace[:foo].should == 4
98
+ block.call
99
+ LSpace[:foo].should == 5
100
+ end
101
+ @lspace[:foo] = 4
102
+ @lspace.enter do
103
+ LSpace.fork
104
+ LSpace[:foo] = 5
105
+ end
106
+ end
107
+ end
108
+
85
109
  describe ".preserve" do
86
110
  it "should delegate to LSpace.current" do
87
111
  LSpace.current.should_receive(:wrap).once
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lspace
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.6'
4
+ version: '0.7'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,120 +9,120 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-07 00:00:00.000000000 Z
12
+ date: 2013-02-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rspec
15
+ type: :development
16
16
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
17
  requirements:
19
18
  - - ! '>='
20
19
  - !ruby/object:Gem::Version
21
20
  version: '0'
22
- type: :development
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
21
  none: false
22
+ version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
27
+ none: false
28
+ prerelease: false
29
+ name: rspec
30
30
  - !ruby/object:Gem::Dependency
31
- name: pry-rescue
31
+ type: :development
32
32
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
33
  requirements:
35
34
  - - ! '>='
36
35
  - !ruby/object:Gem::Version
37
36
  version: '0'
38
- type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
37
  none: false
38
+ version_requirements: !ruby/object:Gem::Requirement
42
39
  requirements:
43
40
  - - ! '>='
44
41
  - !ruby/object:Gem::Version
45
42
  version: '0'
43
+ none: false
44
+ prerelease: false
45
+ name: pry-rescue
46
46
  - !ruby/object:Gem::Dependency
47
- name: pry-stack_explorer
47
+ type: :development
48
48
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
49
  requirements:
51
50
  - - ! '>='
52
51
  - !ruby/object:Gem::Version
53
52
  version: '0'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
53
  none: false
54
+ version_requirements: !ruby/object:Gem::Requirement
58
55
  requirements:
59
56
  - - ! '>='
60
57
  - !ruby/object:Gem::Version
61
58
  version: '0'
59
+ none: false
60
+ prerelease: false
61
+ name: pry-stack_explorer
62
62
  - !ruby/object:Gem::Dependency
63
- name: eventmachine
63
+ type: :development
64
64
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
65
  requirements:
67
66
  - - ! '>='
68
67
  - !ruby/object:Gem::Version
69
68
  version: '0'
70
- type: :development
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
69
  none: false
70
+ version_requirements: !ruby/object:Gem::Requirement
74
71
  requirements:
75
72
  - - ! '>='
76
73
  - !ruby/object:Gem::Version
77
74
  version: '0'
75
+ none: false
76
+ prerelease: false
77
+ name: eventmachine
78
78
  - !ruby/object:Gem::Dependency
79
- name: celluloid
79
+ type: :development
80
80
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
81
  requirements:
83
82
  - - ! '>='
84
83
  - !ruby/object:Gem::Version
85
84
  version: '0'
86
- type: :development
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
85
  none: false
86
+ version_requirements: !ruby/object:Gem::Requirement
90
87
  requirements:
91
88
  - - ! '>='
92
89
  - !ruby/object:Gem::Version
93
90
  version: '0'
91
+ none: false
92
+ prerelease: false
93
+ name: celluloid
94
94
  - !ruby/object:Gem::Dependency
95
- name: yard
95
+ type: :development
96
96
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
97
  requirements:
99
98
  - - ! '>='
100
99
  - !ruby/object:Gem::Version
101
100
  version: '0'
102
- type: :development
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
101
  none: false
102
+ version_requirements: !ruby/object:Gem::Requirement
106
103
  requirements:
107
104
  - - ! '>='
108
105
  - !ruby/object:Gem::Version
109
106
  version: '0'
107
+ none: false
108
+ prerelease: false
109
+ name: yard
110
110
  - !ruby/object:Gem::Dependency
111
- name: redcarpet
111
+ type: :development
112
112
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
113
  requirements:
115
114
  - - ! '>='
116
115
  - !ruby/object:Gem::Version
117
116
  version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
117
  none: false
118
+ version_requirements: !ruby/object:Gem::Requirement
122
119
  requirements:
123
120
  - - ! '>='
124
121
  - !ruby/object:Gem::Version
125
122
  version: '0'
123
+ none: false
124
+ prerelease: false
125
+ name: redcarpet
126
126
  description: Provides the convenience of global variables, without the safety concerns.
127
127
  email: conrad.irwin@gmail.com
128
128
  executables: []
@@ -155,20 +155,20 @@ rdoc_options: []
155
155
  require_paths:
156
156
  - lib
157
157
  required_ruby_version: !ruby/object:Gem::Requirement
158
- none: false
159
158
  requirements:
160
159
  - - ! '>='
161
160
  - !ruby/object:Gem::Version
162
161
  version: '0'
163
- required_rubygems_version: !ruby/object:Gem::Requirement
164
162
  none: false
163
+ required_rubygems_version: !ruby/object:Gem::Requirement
165
164
  requirements:
166
165
  - - ! '>='
167
166
  - !ruby/object:Gem::Version
168
167
  version: '0'
168
+ none: false
169
169
  requirements: []
170
170
  rubyforge_project:
171
- rubygems_version: 1.8.24
171
+ rubygems_version: 1.8.25
172
172
  signing_key:
173
173
  specification_version: 3
174
174
  summary: Provides local global storage