moneta 1.4.2 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +35 -38
  3. data/CHANGES +9 -0
  4. data/CONTRIBUTORS +2 -0
  5. data/Gemfile +143 -55
  6. data/README.md +5 -4
  7. data/lib/moneta/adapter.rb +52 -0
  8. data/lib/moneta/adapters/activerecord.rb +77 -68
  9. data/lib/moneta/adapters/activesupportcache.rb +22 -31
  10. data/lib/moneta/adapters/cassandra.rb +114 -116
  11. data/lib/moneta/adapters/client.rb +17 -18
  12. data/lib/moneta/adapters/couch.rb +31 -26
  13. data/lib/moneta/adapters/datamapper.rb +9 -5
  14. data/lib/moneta/adapters/daybreak.rb +15 -21
  15. data/lib/moneta/adapters/dbm.rb +6 -12
  16. data/lib/moneta/adapters/file.rb +21 -13
  17. data/lib/moneta/adapters/fog.rb +5 -6
  18. data/lib/moneta/adapters/gdbm.rb +6 -12
  19. data/lib/moneta/adapters/hbase.rb +10 -12
  20. data/lib/moneta/adapters/kyotocabinet.rb +22 -27
  21. data/lib/moneta/adapters/leveldb.rb +14 -20
  22. data/lib/moneta/adapters/lmdb.rb +19 -22
  23. data/lib/moneta/adapters/localmemcache.rb +7 -13
  24. data/lib/moneta/adapters/lruhash.rb +20 -20
  25. data/lib/moneta/adapters/memcached/dalli.rb +25 -33
  26. data/lib/moneta/adapters/memcached/native.rb +14 -20
  27. data/lib/moneta/adapters/memory.rb +5 -7
  28. data/lib/moneta/adapters/mongo.rb +53 -52
  29. data/lib/moneta/adapters/pstore.rb +21 -27
  30. data/lib/moneta/adapters/redis.rb +42 -37
  31. data/lib/moneta/adapters/restclient.rb +17 -25
  32. data/lib/moneta/adapters/riak.rb +8 -9
  33. data/lib/moneta/adapters/sdbm.rb +6 -12
  34. data/lib/moneta/adapters/sequel/mysql.rb +8 -8
  35. data/lib/moneta/adapters/sequel/postgres.rb +17 -17
  36. data/lib/moneta/adapters/sequel/postgres_hstore.rb +47 -47
  37. data/lib/moneta/adapters/sequel/sqlite.rb +9 -9
  38. data/lib/moneta/adapters/sequel.rb +56 -65
  39. data/lib/moneta/adapters/sqlite.rb +37 -35
  40. data/lib/moneta/adapters/tdb.rb +8 -14
  41. data/lib/moneta/adapters/tokyocabinet.rb +19 -17
  42. data/lib/moneta/adapters/tokyotyrant.rb +29 -30
  43. data/lib/moneta/adapters/yaml.rb +1 -5
  44. data/lib/moneta/config.rb +101 -0
  45. data/lib/moneta/expires.rb +0 -1
  46. data/lib/moneta/expires_support.rb +3 -4
  47. data/lib/moneta/pool.rb +1 -1
  48. data/lib/moneta/proxy.rb +29 -0
  49. data/lib/moneta/server.rb +21 -14
  50. data/lib/moneta/version.rb +1 -1
  51. data/lib/moneta/wrapper.rb +5 -0
  52. data/lib/moneta.rb +2 -0
  53. data/moneta.gemspec +1 -0
  54. data/spec/moneta/adapters/client/client_helper.rb +4 -3
  55. data/spec/moneta/adapters/faraday_helper.rb +3 -2
  56. data/spec/moneta/adapters/lruhash/adapter_lruhash_spec.rb +10 -6
  57. data/spec/moneta/adapters/mongo/adapter_mongo_spec.rb +2 -2
  58. data/spec/moneta/config_spec.rb +219 -0
  59. data/spec/moneta/proxies/transformer/transformer_bson_spec.rb +3 -1
  60. data/spec/moneta/proxies/transformer/transformer_marshal_escape_spec.rb +2 -0
  61. data/spec/rack/session_moneta_spec.rb +44 -25
  62. data/spec/restserver.rb +3 -14
  63. metadata +24 -6
@@ -4,30 +4,50 @@ require 'rack/mock'
4
4
  require 'thread'
5
5
 
6
6
  describe Rack::Session::Moneta do
7
- session_key = Rack::Session::Moneta::DEFAULT_OPTIONS[:key]
8
- session_match = /#{session_key}=([0-9a-fA-F]+);/
9
- incrementor = lambda do |env|
10
- env["rack.session"]["counter"] ||= 0
11
- env["rack.session"]["counter"] += 1
12
- Rack::Response.new(env["rack.session"].inspect).to_a
7
+ use_timecop
8
+
9
+ let(:session_key) { Rack::Session::Moneta::DEFAULT_OPTIONS[:key] }
10
+ let(:session_match) { /#{session_key}=([0-9a-fA-F]+);/ }
11
+
12
+ let :incrementor_proc do
13
+ lambda do |env|
14
+ env["rack.session"]["counter"] ||= 0
15
+ env["rack.session"]["counter"] += 1
16
+ Rack::Response.new(env["rack.session"].inspect).to_a
17
+ end
18
+ end
19
+
20
+ let :drop_session do
21
+ Rack::Lint.new(proc do |env|
22
+ env['rack.session.options'][:drop] = true
23
+ incrementor_proc.call(env)
24
+ end)
25
+ end
26
+
27
+ let :renew_session do
28
+ Rack::Lint.new(proc do |env|
29
+ env['rack.session.options'][:renew] = true
30
+ incrementor_proc.call(env)
31
+ end)
32
+ end
33
+
34
+ let :defer_session do
35
+ Rack::Lint.new(proc do |env|
36
+ env['rack.session.options'][:defer] = true
37
+ incrementor_proc.call(env)
38
+ end)
39
+ end
40
+
41
+ let :skip_session do
42
+ Rack::Lint.new(proc do |env|
43
+ env['rack.session.options'][:skip] = true
44
+ incrementor_proc.call(env)
45
+ end)
46
+ end
47
+
48
+ let :incrementor do
49
+ Rack::Lint.new(incrementor_proc)
13
50
  end
14
- drop_session = Rack::Lint.new(proc do |env|
15
- env['rack.session.options'][:drop] = true
16
- incrementor.call(env)
17
- end)
18
- renew_session = Rack::Lint.new(proc do |env|
19
- env['rack.session.options'][:renew] = true
20
- incrementor.call(env)
21
- end)
22
- defer_session = Rack::Lint.new(proc do |env|
23
- env['rack.session.options'][:defer] = true
24
- incrementor.call(env)
25
- end)
26
- skip_session = Rack::Lint.new(proc do |env|
27
- env['rack.session.options'][:skip] = true
28
- incrementor.call(env)
29
- end)
30
- incrementor = Rack::Lint.new(incrementor)
31
51
 
32
52
  it 'supports different constructors' do
33
53
  Rack::Session::Moneta.new(incrementor, :store => :Memory)
@@ -96,8 +116,7 @@ describe Rack::Session::Moneta do
96
116
  res = Rack::MockRequest.new(pool).get('/', "HTTP_COOKIE" => cookie)
97
117
  res["Set-Cookie"].should == cookie
98
118
  res.body.should include '"counter"=>2'
99
- puts 'Sleeping to expire session' if $DEBUG
100
- sleep 4
119
+ advance 4
101
120
  res = Rack::MockRequest.new(pool).get('/', "HTTP_COOKIE" => cookie)
102
121
  res["Set-Cookie"].should_not == cookie
103
122
  res.body.should include '"counter"=>1'
data/spec/restserver.rb CHANGED
@@ -1,18 +1,7 @@
1
1
  require 'faraday'
2
2
  require 'rack'
3
3
  require 'rack/moneta_rest'
4
-
5
- MONETA_RESTSERVER_LOGGER =
6
- if defined?(JRUBY_VERSION)
7
- require 'rjack-logback'
8
- RJack::Logback.config_console( :level => :off )
9
- require 'fishwife'
10
- nil
11
- else
12
- require 'webrick'
13
- # Keep webrick quiet
14
- WEBrick::Log.new($stderr, WEBrick::BasicLog::ERROR)
15
- end
4
+ require 'webrick'
16
5
 
17
6
  class MonetaRestServerShutdown < StandardError; end
18
7
 
@@ -25,10 +14,10 @@ def start_restserver(port)
25
14
  end
26
15
  end,
27
16
  :environment => 'none',
28
- :server => defined?(JRUBY_VERSION) ? :Fishwife : :webrick,
17
+ :server => :webrick,
29
18
  :Port => port,
30
19
  :AccessLog => [],
31
- :Logger => MONETA_RESTSERVER_LOGGER
20
+ :Logger => WEBrick::Log.new($stderr, WEBrick::BasicLog::ERROR)
32
21
  )
33
22
 
34
23
  Thread.start { server.start }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moneta
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Mendler
@@ -11,8 +11,22 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-05-11 00:00:00.000000000 Z
14
+ date: 2022-04-06 00:00:00.000000000 Z
15
15
  dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: multi_json
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - "~>"
21
+ - !ruby/object:Gem::Version
22
+ version: 1.15.0
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: 1.15.0
16
30
  - !ruby/object:Gem::Dependency
17
31
  name: parallel_tests
18
32
  requirement: !ruby/object:Gem::Requirement
@@ -125,6 +139,7 @@ files:
125
139
  - lib/action_dispatch/middleware/session/moneta_store.rb
126
140
  - lib/active_support/cache/moneta_store.rb
127
141
  - lib/moneta.rb
142
+ - lib/moneta/adapter.rb
128
143
  - lib/moneta/adapters/activerecord.rb
129
144
  - lib/moneta/adapters/activesupportcache.rb
130
145
  - lib/moneta/adapters/cassandra.rb
@@ -166,6 +181,7 @@ files:
166
181
  - lib/moneta/adapters/yaml.rb
167
182
  - lib/moneta/builder.rb
168
183
  - lib/moneta/cache.rb
184
+ - lib/moneta/config.rb
169
185
  - lib/moneta/create_support.rb
170
186
  - lib/moneta/dbm_adapter.rb
171
187
  - lib/moneta/defaults.rb
@@ -354,6 +370,7 @@ files:
354
370
  - spec/moneta/adapters/yaml/standard_yaml_spec.rb
355
371
  - spec/moneta/adapters/yaml/standard_yaml_with_expires_spec.rb
356
372
  - spec/moneta/builder_spec.rb
373
+ - spec/moneta/config_spec.rb
357
374
  - spec/moneta/mutex_spec.rb
358
375
  - spec/moneta/proxies/cache/cache_file_memory_spec.rb
359
376
  - spec/moneta/proxies/cache/cache_memory_null_spec.rb
@@ -429,9 +446,9 @@ licenses:
429
446
  - MIT
430
447
  metadata:
431
448
  bug_tracker_uri: https://github.com/moneta-rb/moneta/issues
432
- changelog_uri: https://github.com/moneta-rb/moneta/blob/v1.4.2/CHANGES
433
- documentation_uri: https://www.rubydoc.info/gems/moneta/1.4.2
434
- source_code_uri: https://github.com/moneta-rb/moneta/tree/v1.4.2
449
+ changelog_uri: https://github.com/moneta-rb/moneta/blob/v1.5.0/CHANGES
450
+ documentation_uri: https://www.rubydoc.info/gems/moneta/1.5.0
451
+ source_code_uri: https://github.com/moneta-rb/moneta/tree/v1.5.0
435
452
  post_install_message:
436
453
  rdoc_options: []
437
454
  require_paths:
@@ -447,7 +464,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
447
464
  - !ruby/object:Gem::Version
448
465
  version: '0'
449
466
  requirements: []
450
- rubygems_version: 3.2.15
467
+ rubygems_version: 3.3.8
451
468
  signing_key:
452
469
  specification_version: 4
453
470
  summary: A unified interface to key/value stores, including Redis, Memcached, TokyoCabinet,
@@ -596,6 +613,7 @@ test_files:
596
613
  - spec/moneta/adapters/yaml/standard_yaml_spec.rb
597
614
  - spec/moneta/adapters/yaml/standard_yaml_with_expires_spec.rb
598
615
  - spec/moneta/builder_spec.rb
616
+ - spec/moneta/config_spec.rb
599
617
  - spec/moneta/mutex_spec.rb
600
618
  - spec/moneta/proxies/cache/cache_file_memory_spec.rb
601
619
  - spec/moneta/proxies/cache/cache_memory_null_spec.rb