request_store 1.0.2 → 1.0.3

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/README.md CHANGED
@@ -1,7 +1,7 @@
1
- # RequestStore [![build status](https://secure.travis-ci.org/steveklabnik/request_store.png?branch=master)](https://secure.travis-ci.org/steveklabnik/request_store) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/steveklabnik/request_store)
1
+ # RequestStore [![build status](https://travis-ci.org/steveklabnik/request_store.png?branch=master)](https://travis-ci.org/steveklabnik/request_store) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/steveklabnik/request_store)
2
2
 
3
3
  Ever needed to use a global variable in Rails? Ugh, that's the worst. If you
4
- need gobal state, you've probably reached for `Thread.current`. Like this:
4
+ need global state, you've probably reached for `Thread.current`. Like this:
5
5
 
6
6
  ```
7
7
  def self.foo
@@ -66,6 +66,14 @@ You'll probably have to shove this somewhere:
66
66
  use RequestStore::Middleware
67
67
  ```
68
68
 
69
+ ### No Rack? No Problem!
70
+
71
+ If you don't use the Middleware, for example in a raketask or test, you need to do this before first usage:
72
+
73
+ ```
74
+ RequestStore.clear!
75
+ ```
76
+
69
77
  ## Contributing
70
78
 
71
79
  1. Fork it
@@ -1,20 +1,13 @@
1
1
  require "request_store/version"
2
-
2
+ require "request_store/middleware"
3
3
  require "request_store/railtie" if defined?(Rails)
4
4
 
5
5
  module RequestStore
6
6
  def self.store
7
- Thread.current[:request_store]
7
+ Thread.current[:request_store] ||= {}
8
8
  end
9
9
 
10
- class Middleware
11
- def initialize(app)
12
- @app = app
13
- end
14
-
15
- def call(env)
16
- Thread.current[:request_store] = {}
17
- @app.call(env)
18
- end
10
+ def self.clear!
11
+ Thread.current[:request_store] = {}
19
12
  end
20
13
  end
@@ -0,0 +1,12 @@
1
+ module RequestStore
2
+ class Middleware
3
+ def initialize(app)
4
+ @app = app
5
+ end
6
+
7
+ def call(env)
8
+ RequestStore.clear!
9
+ @app.call(env)
10
+ end
11
+ end
12
+ end
@@ -1,3 +1,3 @@
1
1
  module RequestStore
2
- VERSION = "1.0.2"
2
+ VERSION = "1.0.3"
3
3
  end
@@ -0,0 +1,15 @@
1
+ require 'minitest/autorun'
2
+
3
+ require 'request_store'
4
+
5
+ class MiddlewareTest < Minitest::Unit::TestCase
6
+ def test_middleware_resets_store
7
+ app = RackApp.new
8
+ middleware = RequestStore::Middleware.new(app)
9
+
10
+ middleware.call({})
11
+ middleware.call({})
12
+
13
+ assert_equal 1, RequestStore.store[:foo]
14
+ end
15
+ end
@@ -3,26 +3,33 @@ require 'minitest/autorun'
3
3
  require 'request_store'
4
4
 
5
5
  class RequestStoreTest < Minitest::Unit::TestCase
6
+ def test_initial_state
7
+ Thread.current[:request_store] = nil
8
+ assert_equal RequestStore.store, Hash.new
9
+ end
10
+
11
+ def test_init_with_hash
12
+ RequestStore.clear!
13
+ assert_equal Hash.new, RequestStore.store
14
+ end
15
+
16
+ def test_clear
17
+ RequestStore.clear!
18
+ RequestStore.store[:foo] = 1
19
+ RequestStore.clear!
20
+ assert_equal Hash.new, RequestStore.store
21
+ end
22
+
6
23
  def test_quacks_like_hash
24
+ RequestStore.clear!
7
25
  RequestStore.store[:foo] = 1
8
26
  assert_equal 1, RequestStore.store[:foo]
9
27
  assert_equal 1, RequestStore.store.fetch(:foo)
10
28
  end
11
29
 
12
30
  def test_delegates_to_thread
31
+ RequestStore.clear!
13
32
  RequestStore.store[:foo] = 1
14
33
  assert_equal 1, Thread.current[:request_store][:foo]
15
34
  end
16
35
  end
17
-
18
- class MiddlewareTest < Minitest::Unit::TestCase
19
- def test_middleware_resets_store
20
- app = RackApp.new
21
- middleware = RequestStore::Middleware.new(app)
22
-
23
- middleware.call({})
24
- middleware.call({})
25
-
26
- assert_equal 1, Thread.current[:request_store][:foo]
27
- end
28
- end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: request_store
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
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-12-17 00:00:00.000000000 Z
12
+ date: 2012-12-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -57,9 +57,11 @@ files:
57
57
  - README.md
58
58
  - Rakefile
59
59
  - lib/request_store.rb
60
+ - lib/request_store/middleware.rb
60
61
  - lib/request_store/railtie.rb
61
62
  - lib/request_store/version.rb
62
63
  - request_store.gemspec
64
+ - test/middleware_test.rb
63
65
  - test/request_store_test.rb
64
66
  - test/test_helper.rb
65
67
  homepage: http://github.com/steveklabnik/request_store
@@ -87,6 +89,7 @@ signing_key:
87
89
  specification_version: 3
88
90
  summary: RequestStore gives you per-request global storage.
89
91
  test_files:
92
+ - test/middleware_test.rb
90
93
  - test/request_store_test.rb
91
94
  - test/test_helper.rb
92
95
  has_rdoc: