rails_current 1.1.0 → 1.2.0

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/rails_current.rb CHANGED
@@ -1,7 +1,9 @@
1
1
  require 'map'
2
2
 
3
3
  module Current
4
- def Current.version() '1.1.0' end
4
+ def Current.version
5
+ '1.2.0'
6
+ end
5
7
 
6
8
  def Current.data
7
9
  Thread.current[:current] ||= Map.new
@@ -51,8 +53,8 @@ module Current
51
53
  data[name] = value
52
54
  end
53
55
 
54
- define_method(name + '?') do |value|
55
- data[name]
56
+ define_method(name + '?') do |*args|
57
+ send(name)
56
58
  end
57
59
  end
58
60
  end
@@ -106,29 +108,15 @@ module Current
106
108
  end
107
109
  end
108
110
 
109
- Code = proc do
110
- def method_missing(method, *args, &block)
111
- case method.to_s
112
- when /^current_(.*)$/
113
- msg = $1
114
- Current.send(msg, *args, &block)
115
- else
116
- super
117
- end
111
+ def method_missing(method, *args, &block)
112
+ case method.to_s
113
+ when /^current_(.*)$/
114
+ msg = $1
115
+ Current.send(msg, *args, &block)
116
+ else
117
+ super
118
118
  end
119
119
  end
120
-
121
- def Current.included(other)
122
- super
123
- ensure
124
- other.send(:module_eval, &Code)
125
- end
126
-
127
- def Current.extend_object(object)
128
- super
129
- ensure
130
- object.send(:instance_eval, &Code)
131
- end
132
120
  end
133
121
 
134
122
  def Current(*args, &block)
@@ -147,7 +135,7 @@ if defined?(Rails)
147
135
  Current.clear
148
136
  Current.controller = controller
149
137
  end
150
- end
138
+ end if defined?(::ActionController::Base)
151
139
  end
152
140
  end
153
141
 
@@ -157,8 +145,16 @@ if defined?(Rails)
157
145
  Current.install_before_filter!
158
146
  end
159
147
  end
148
+ else
149
+ Current.install_before_filter!
160
150
  end
161
151
 
162
152
  end
163
153
 
164
- Rails_current = Current
154
+ ::Rails_current = ::Current
155
+
156
+ BEGIN {
157
+ Object.send(:remove_const, :Current) if defined?(::Current)
158
+ Object.send(:remove_const, :Rails_current) if defined?(::Rails_current)
159
+ }
160
+
@@ -3,7 +3,7 @@
3
3
 
4
4
  Gem::Specification::new do |spec|
5
5
  spec.name = "rails_current"
6
- spec.version = "1.1.0"
6
+ spec.version = "1.2.0"
7
7
  spec.platform = Gem::Platform::RUBY
8
8
  spec.summary = "rails_current"
9
9
  spec.description = "description: rails_current kicks the ass"
@@ -112,19 +112,100 @@ Testing Current do
112
112
  assert{ Current.attributes =~ {:foo => :bar, :bar => :foo} }
113
113
  end
114
114
 
115
+ ##
116
+ #
117
+ test 'that assigning to Current dynamically adds accessor methods' do
118
+ assert{ Current.foo = 42 }
119
+ assert{ Current.foo == 42 }
120
+
121
+ assert{ Current.bar = 'forty-two' }
122
+ assert{ Current.bar == 'forty-two' }
123
+ end
124
+
125
+ ##
126
+ #
127
+ test 'that query methods on Current werky' do
128
+ assert{ Current.foo?.nil? }
129
+ assert{ Current.foo = 42 }
130
+ assert{ Current.foo? == 42 }
131
+ end
132
+
133
+ ##
134
+ #
135
+ test 'that loading Current into a rails app creates Current.user and Current.controller' do
136
+ mock_rails! do
137
+ assert{ Current.attributes =~ {:user => nil, :controller => nil} }
138
+ end
139
+
140
+ mock_rails_engine! do
141
+ assert{ Current.attributes =~ {:user => nil, :controller => nil} }
142
+ assert{ $before_initialize_called }
143
+ assert{ $before_filter_called }
144
+ end
145
+ end
146
+
115
147
  ##
116
148
  #
117
149
  teardown do
118
150
  assert{ Current.reset }
119
151
  end
120
152
 
153
+
154
+ private
155
+ def mock_rails!
156
+ Object.module_eval <<-__
157
+ module Rails
158
+ end
159
+ __
160
+ $load.call()
161
+ yield
162
+ Object.send(:remove_const, :Rails)
163
+ end
164
+
165
+ def mock_rails_engine!
166
+ Object.module_eval <<-__
167
+ module Rails
168
+ class Engine
169
+ def Engine.config
170
+ Config
171
+ end
172
+
173
+ class Config
174
+ def Config.before_initialize(*args, &block)
175
+ block.call
176
+ ensure
177
+ $before_initialize_called = true
178
+ end
179
+ end
180
+ end
181
+ end
182
+
183
+ module ActionController
184
+ class Base
185
+ def Base.before_filter(*args, &block)
186
+ block.call()
187
+ ensure
188
+ $before_filter_called = true
189
+ end
190
+ end
191
+ end
192
+ __
193
+ $load.call()
194
+ yield
195
+ Object.send(:remove_const, :Rails)
196
+ end
121
197
  end
122
198
 
123
199
 
124
200
  BEGIN {
125
- this = File.expand_path(__FILE__)
126
- root = File.dirname(File.dirname(this))
127
-
128
- require(File.join(root, 'lib/rails_current.rb'))
129
- require(File.join(root, 'test/testing.rb'))
201
+ $this = File.expand_path(__FILE__)
202
+ $root = File.dirname(File.dirname($this))
203
+
204
+ (
205
+ $load =
206
+ proc do
207
+ Kernel.load(File.join($root, 'lib/rails_current.rb'))
208
+ Kernel.load(File.join($root, 'test/testing.rb'))
209
+ end
210
+ ).call()
130
211
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_current
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-05 00:00:00.000000000 Z
12
+ date: 2012-01-06 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: ! 'description: rails_current kicks the ass'
15
15
  email: ara.t.howard@gmail.com