rails_current 1.1.0 → 1.2.0

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