moneta 1.5.1 → 1.5.2
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.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +1 -1
- data/CHANGES +6 -0
- data/CONTRIBUTORS +3 -0
- data/Gemfile +1 -5
- data/README.md +4 -6
- data/feature_matrix.yaml +1 -1
- data/lib/moneta/adapters/mongo.rb +5 -3
- data/lib/moneta/proxy.rb +1 -1
- data/lib/moneta/version.rb +1 -1
- data/lib/moneta.rb +1 -1
- data/spec/helper.rb +1 -0
- data/spec/moneta/adapters/activerecord/adapter_activerecord_existing_connection_spec.rb +2 -1
- data/spec/moneta/adapters/activerecord/adapter_activerecord_spec.rb +3 -1
- data/spec/moneta/adapters/activerecord/standard_activerecord_spec.rb +2 -1
- data/spec/moneta/adapters/activerecord/standard_activerecord_with_expires_spec.rb +2 -1
- data/spec/moneta/adapters/activesupportcache/adapter_activesupportcache_spec.rb +1 -1
- data/spec/moneta/adapters/activesupportcache/adapter_activesupportcache_with_default_expires_spec.rb +1 -1
- data/spec/moneta/adapters/activesupportcache/standard_activesupportcache_spec.rb +1 -1
- data/spec/moneta/adapters/datamapper/adapter_datamapper_spec.rb +9 -5
- data/spec/moneta/adapters/datamapper/standard_datamapper_spec.rb +1 -1
- data/spec/moneta/adapters/datamapper/standard_datamapper_with_expires_spec.rb +1 -1
- data/spec/moneta/adapters/datamapper/standard_datamapper_with_repository_spec.rb +1 -1
- data/spec/moneta/adapters/null/standard_null_spec.rb +5 -0
- data/spec/moneta/adapters/sequel/helper.rb +4 -1
- data/test/action_dispatch/session_moneta_store_test.rb +5 -5
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 61d01584fc8497503e70aa6cb4fcea5ead6a05b9f4f1c2c9db138cd0470f948f
|
|
4
|
+
data.tar.gz: b7e2822f9aac62ab718964f4f8a3b4bf7a4473aa6ab9291b0df28882a3de2bca
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fd8eb44d64eb8b62529497770bbea915fdd6880e907d697de82156aa1c9ca2f7bb58b7bb68157eefab138a8bc9aab8debf4186d4a8828bb664385c59027cd2a3
|
|
7
|
+
data.tar.gz: 1d97a4b4de9f0242fa260e1b197d35333a527019c43b01fab3a913c3f833a5963b47776ac78c3b9da7be70a117eaafcbb09e81108b233135ea6a018280f1b3a3
|
data/.github/workflows/ruby.yml
CHANGED
data/CHANGES
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
1.5.2
|
|
2
|
+
|
|
3
|
+
* Proxy - handle returning config when the adapter does not use config
|
|
4
|
+
* Avoid calling `supports?(:expires)` when expiry isn't needed
|
|
5
|
+
* Adapters::Mongo - fix `merge!` behaviour when no values are inserted
|
|
6
|
+
|
|
1
7
|
1.5.1
|
|
2
8
|
|
|
3
9
|
* Adapters::File - fix an implicit hash issue in Ruby 3 (#222)
|
data/CONTRIBUTORS
CHANGED
|
@@ -3,11 +3,13 @@ Alastair Pharo <me@asph.dev>
|
|
|
3
3
|
Alejandro Crosa <acrosa@sharing.local>
|
|
4
4
|
Alessio Signorini <alessio@signorini.us>
|
|
5
5
|
Anthony Eden <anthonyeden@gmail.com>
|
|
6
|
+
Antoine Beaupré <anarcat@debian.org>
|
|
6
7
|
Antonio Terceiro <terceiro@debian.org>
|
|
7
8
|
Atoxhybrid <atoxhybrid@gmail.com>
|
|
8
9
|
AtoxIO <atoxhybrid@gmail.com>
|
|
9
10
|
Ben Schwarz <ben.schwarz@gmail.com>
|
|
10
11
|
Benjamin Yu <benjaminlyu@gmail.com>
|
|
12
|
+
Corey Smith <korkey128k@gmail.com>
|
|
11
13
|
Daniel Mendler <mail@daniel-mendler.de>
|
|
12
14
|
Denis Defreyne <denis.defreyne@stoneship.org>
|
|
13
15
|
Derek Kastner <dkastner@gmail.com>
|
|
@@ -34,6 +36,7 @@ Quin Hoxie <quin@aboutus.org>
|
|
|
34
36
|
Ryan T. Hosford <tad.hosford@gmail.com>
|
|
35
37
|
Scott Wadden <scott.wadden@gmail.com>
|
|
36
38
|
Sven Riedel <sr@gimp.org>
|
|
39
|
+
Thomas R. Koll <tomk32@tomk32.de>
|
|
37
40
|
Timo Goebel <timo.goebel@dm.de>
|
|
38
41
|
Tom Meier <ozmeier@yahoo.co.uk>
|
|
39
42
|
Tony Han <h.bing612@gmail.com>
|
data/Gemfile
CHANGED
|
@@ -52,10 +52,6 @@ group :transformers, optional: true do
|
|
|
52
52
|
gem 'snappy', platforms: :ruby
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
group :quicklz, optional: true do
|
|
56
|
-
gem 'qlzruby', platforms: :ruby
|
|
57
|
-
end
|
|
58
|
-
|
|
59
55
|
# Hash transformer library
|
|
60
56
|
group :city, optional: true do
|
|
61
57
|
gem 'cityhash', platforms: :ruby
|
|
@@ -171,7 +167,7 @@ end
|
|
|
171
167
|
|
|
172
168
|
group :sqlite, optional: true do
|
|
173
169
|
gem 'activerecord-jdbcsqlite3-adapter', platforms: :jruby
|
|
174
|
-
gem 'sqlite3', '~> 1.3
|
|
170
|
+
gem 'sqlite3', '~> 1.5.3', platforms: :ruby
|
|
175
171
|
end
|
|
176
172
|
|
|
177
173
|
group :postgresql, optional: true do
|
data/README.md
CHANGED
|
@@ -106,11 +106,11 @@ Out of the box, it supports the following backends. Use the backend name symbol
|
|
|
106
106
|
* Key/value databases:
|
|
107
107
|
* [Berkeley DB using DBM interface or NDBM (Depends on Ruby environment)](http://www.ruby-doc.org/stdlib/libdoc/dbm/rdoc/DBM.html) (`:DBM`)
|
|
108
108
|
* [Cassandra](http://cassandra.apache.org/) (`:Cassandra`)
|
|
109
|
-
* [Daybreak](
|
|
109
|
+
* [Daybreak](https://propublica.github.io/daybreak/) (`:Daybreak`)
|
|
110
110
|
* [GDBM](http://www.ruby-doc.org/stdlib/libdoc/gdbm/rdoc/GDBM.html) (`:GDBM`)
|
|
111
111
|
* [HBase](http://hbase.apache.org/) (`:HBase`)
|
|
112
112
|
* [LevelDB](http://code.google.com/p/leveldb/) (`:LevelDB`)
|
|
113
|
-
* [LMDB](http://symas.com/
|
|
113
|
+
* [LMDB](http://symas.com/lmdb) (`:LMDB`)
|
|
114
114
|
* [Redis](http://redis.io/) (`:Redis`)
|
|
115
115
|
* [Riak](http://docs.basho.com/) (`:Riak`)
|
|
116
116
|
* [SDBM](http://www.ruby-doc.org/stdlib/libdoc/sdbm/rdoc/SDBM.html) (`:SDBM`)
|
|
@@ -150,7 +150,7 @@ __NOTE:__ <a name="backend-matrix"></a>The backend matrix is much more readable
|
|
|
150
150
|
|
|
151
151
|
<tr><td>File</td><td>-</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#F44">✗</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#F44">✗</td><td style="text-align:center;background:#F44">✗</td><td>File store</td></tr>
|
|
152
152
|
|
|
153
|
-
<tr><td>LMDB</td><td>lmdb</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#F44">✗</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#F44">✗</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td><a href="http://symas.com/
|
|
153
|
+
<tr><td>LMDB</td><td>lmdb</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#F44">✗</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#F44">✗</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td><a href="http://symas.com/lmdb">Symas Lightning Memory-Mapped Database (LMDB)</a></td></tr>
|
|
154
154
|
|
|
155
155
|
<tr><td>Sequel</td><td>sequel</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#F44">✗</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td style="text-align:center;background:#5F5">✓</td><td><a href="http://sequel.rubyforge.org/">Sequel</a> ORM</td></tr>
|
|
156
156
|
|
|
@@ -221,9 +221,7 @@ __NOTE:__ <a name="backend-matrix"></a>The backend matrix is much more readable
|
|
|
221
221
|
3. Share a Moneta store between multiple processes using `Moneta::Shared` (See below).
|
|
222
222
|
4. If a store provides atomic increment it can be used with `Moneta::Semaphore`. You can add weak `#increment` support using the `Moneta::WeakIncrement` proxy.
|
|
223
223
|
5. If a store provides atomic creation it can be used with `Moneta::Mutex`. You can add weak `#create` support using the `Moneta::WeakCreate` proxy.
|
|
224
|
-
6. Add expiration support by using `Moneta::Expires` or by passing the option
|
|
225
|
-
`expires: true` (or `expires: <seconds>` if you want all values to expire by
|
|
226
|
-
default) to `Moneta#new`.
|
|
224
|
+
6. Add expiration support by using `Moneta::Expires` or by passing the option `expires: true` to `Moneta#new`.
|
|
227
225
|
7. This indicates that there is some performance gain when fetching multiple values at once using `#values_at`/`#fetch_values` or `#slice`. For instance, the `MGET` instruction in Redis, or the ability to retrieve several rows in one query in SQL.
|
|
228
226
|
8. This indicates that there is some performance gain when storing multiple key/value pairs at once using `#merge!`/`#update`.
|
|
229
227
|
9. Sqlite/YAML/PStore are multiprocess safe, but the performance suffers badly since the whole database file must be locked for writing. Use a key/value server if you want multiprocess concurrency!
|
data/feature_matrix.yaml
CHANGED
|
@@ -30,7 +30,7 @@ backends:
|
|
|
30
30
|
platforms: [ MRI ]
|
|
31
31
|
gems: lmdb
|
|
32
32
|
features: [ threadsafe, multiprocess, increment, create, each_key, bulk_read, bulk_write ]
|
|
33
|
-
description: "[Symas Lightning Memory-Mapped Database (LMDB)](http://symas.com/
|
|
33
|
+
description: "[Symas Lightning Memory-Mapped Database (LMDB)](http://symas.com/lmdb)"
|
|
34
34
|
- adapter: Sequel
|
|
35
35
|
platforms: [ MRI, JRuby ]
|
|
36
36
|
gems: sequel
|
|
@@ -164,9 +164,11 @@ module Moneta
|
|
|
164
164
|
existing = Hash[slice(*pairs.map { |key, _| key })]
|
|
165
165
|
update_pairs, insert_pairs = pairs.partition { |key, _| existing.key?(key) }
|
|
166
166
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
167
|
+
unless insert_pairs.empty?
|
|
168
|
+
@collection.insert_many(insert_pairs.map do |key, value|
|
|
169
|
+
value_to_doc(to_binary(key), value, options)
|
|
170
|
+
end)
|
|
171
|
+
end
|
|
170
172
|
|
|
171
173
|
update_pairs.each do |key, value|
|
|
172
174
|
value = yield(key, existing[key], value) if block_given?
|
data/lib/moneta/proxy.rb
CHANGED
data/lib/moneta/version.rb
CHANGED
data/lib/moneta.rb
CHANGED
|
@@ -144,7 +144,7 @@ module Moneta
|
|
|
144
144
|
a = Adapters.const_get(name).new(options)
|
|
145
145
|
build do
|
|
146
146
|
use :Logger, Hash === logger ? logger : {} if logger
|
|
147
|
-
use :Expires, expires: options[:expires] if !a.supports?(:expires)
|
|
147
|
+
use :Expires, expires: options[:expires] if expires && !a.supports?(:expires)
|
|
148
148
|
use :Transformer, transformer
|
|
149
149
|
use :Lock if threadsafe
|
|
150
150
|
adapter a
|
data/spec/helper.rb
CHANGED
|
@@ -269,6 +269,7 @@ module MonetaHelpers
|
|
|
269
269
|
# want to run the tests but don't want to grant root access to moneta
|
|
270
270
|
let(:mysql_host) { ENV['MYSQL_HOST'] || 'localhost' }
|
|
271
271
|
let(:mysql_port) { ENV['MYSQL_TCP_PORT'] || '3306' }
|
|
272
|
+
let(:mysql_socket) { ENV['MYSQL_SOCKET'] }
|
|
272
273
|
let(:mysql_username) { ENV['MONETA_MYSQL_USERNAME'] || 'root' }
|
|
273
274
|
let(:mysql_password) { ENV['MONETA_MYSQL_PASSWORD'] }
|
|
274
275
|
let(:mysql_database1) { ENV['MONETA_MYSQL_DATABASE1'] || 'moneta' }
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
describe 'adapter_activerecord_existing_connection', adapter: :ActiveRecord, mysql: true do
|
|
1
|
+
describe 'adapter_activerecord_existing_connection', adapter: :ActiveRecord, mysql: true, broken: ::Gem::Version.new(RUBY_ENGINE_VERSION) >= ::Gem::Version.new('3.0.0') do
|
|
2
2
|
before :all do
|
|
3
3
|
require 'active_record'
|
|
4
4
|
end
|
|
@@ -8,6 +8,7 @@ describe 'adapter_activerecord_existing_connection', adapter: :ActiveRecord, mys
|
|
|
8
8
|
ActiveRecord::Base.configurations = {
|
|
9
9
|
default_env => {
|
|
10
10
|
'adapter' => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'),
|
|
11
|
+
'socket' => mysql_socket,
|
|
11
12
|
'host' => mysql_host,
|
|
12
13
|
'port' => mysql_port,
|
|
13
14
|
'database' => mysql_database1,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
describe 'adapter_activerecord', adapter: :ActiveRecord do
|
|
1
|
+
describe 'adapter_activerecord', adapter: :ActiveRecord, broken: ::Gem::Version.new(RUBY_ENGINE_VERSION) >= ::Gem::Version.new('3.0.0') do
|
|
2
2
|
activerecord_specs = ADAPTER_SPECS.with_values(:nil).with_each_key
|
|
3
3
|
|
|
4
4
|
shared_examples :adapter_activerecord do |specs|
|
|
@@ -64,6 +64,7 @@ describe 'adapter_activerecord', adapter: :ActiveRecord do
|
|
|
64
64
|
adapter: (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'),
|
|
65
65
|
host: mysql_host,
|
|
66
66
|
port: mysql_port,
|
|
67
|
+
socket: mysql_socket,
|
|
67
68
|
database: mysql_database1,
|
|
68
69
|
username: mysql_username,
|
|
69
70
|
password: mysql_password
|
|
@@ -75,6 +76,7 @@ describe 'adapter_activerecord', adapter: :ActiveRecord do
|
|
|
75
76
|
adapter: (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'),
|
|
76
77
|
host: mysql_host,
|
|
77
78
|
port: mysql_port,
|
|
79
|
+
socket: mysql_socket,
|
|
78
80
|
database: mysql_database2,
|
|
79
81
|
username: mysql_username,
|
|
80
82
|
password: mysql_password
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
describe "standard_activerecord", adapter: :ActiveRecord, mysql: true do
|
|
1
|
+
describe "standard_activerecord", adapter: :ActiveRecord, mysql: true, broken: ::Gem::Version.new(RUBY_ENGINE_VERSION) >= ::Gem::Version.new('3.0.0') do
|
|
2
2
|
moneta_store :ActiveRecord do
|
|
3
3
|
{
|
|
4
4
|
table: 'standard_activerecord',
|
|
@@ -6,6 +6,7 @@ describe "standard_activerecord", adapter: :ActiveRecord, mysql: true do
|
|
|
6
6
|
adapter: (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'),
|
|
7
7
|
host: mysql_host,
|
|
8
8
|
port: mysql_port,
|
|
9
|
+
socket: mysql_socket,
|
|
9
10
|
database: mysql_database1,
|
|
10
11
|
username: mysql_username,
|
|
11
12
|
password: mysql_password
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
describe "standard_activerecord_with_expires", adapter: :ActiveRecord, mysql: true do
|
|
1
|
+
describe "standard_activerecord_with_expires", adapter: :ActiveRecord, mysql: true, broken: ::Gem::Version.new(RUBY_ENGINE_VERSION) >= ::Gem::Version.new('3.0.0') do
|
|
2
2
|
let(:t_res) { 0.125 }
|
|
3
3
|
let(:min_ttl) { t_res }
|
|
4
4
|
use_timecop
|
|
@@ -10,6 +10,7 @@ describe "standard_activerecord_with_expires", adapter: :ActiveRecord, mysql: tr
|
|
|
10
10
|
adapter: (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'),
|
|
11
11
|
host: mysql_host,
|
|
12
12
|
port: mysql_port,
|
|
13
|
+
socket: mysql_socket,
|
|
13
14
|
database: mysql_database1,
|
|
14
15
|
username: mysql_username,
|
|
15
16
|
password: mysql_password
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require_relative '../memcached_helper.rb'
|
|
2
2
|
|
|
3
|
-
describe 'adapter_activesupportcache', adapter: :ActiveSupportCache do
|
|
3
|
+
describe 'adapter_activesupportcache', adapter: :ActiveSupportCache, broken: ::Gem::Version.new(RUBY_ENGINE_VERSION) >= ::Gem::Version.new('3.0.0') do
|
|
4
4
|
before :all do
|
|
5
5
|
require 'active_support'
|
|
6
6
|
require 'active_support/cache/moneta_store'
|
data/spec/moneta/adapters/activesupportcache/adapter_activesupportcache_with_default_expires_spec.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require_relative '../memcached_helper'
|
|
2
2
|
|
|
3
|
-
describe 'adapter_activesupportcache_with_default_expires', adapter: :ActiveSupportCache do
|
|
3
|
+
describe 'adapter_activesupportcache_with_default_expires', adapter: :ActiveSupportCache, broken: ::Gem::Version.new(RUBY_ENGINE_VERSION) >= ::Gem::Version.new('3.0.0') do
|
|
4
4
|
before :all do
|
|
5
5
|
require 'active_support'
|
|
6
6
|
require 'active_support/cache/moneta_store'
|
|
@@ -6,9 +6,13 @@ describe 'adapter_datamapper', unsupported: defined?(JRUBY_VERSION) || RUBY_ENGI
|
|
|
6
6
|
DataMapper.setup(:default, adapter: :in_memory)
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
+
let :database_uri do
|
|
10
|
+
"mysql://#{mysql_username}:#{mysql_password}@#{mysql_host}:#{mysql_port}/#{mysql_database1}" + (mysql_socket ? "?socket=#{mysql_socket}" : "")
|
|
11
|
+
end
|
|
12
|
+
|
|
9
13
|
moneta_build do
|
|
10
14
|
Moneta::Adapters::DataMapper.new(
|
|
11
|
-
setup:
|
|
15
|
+
setup: database_uri,
|
|
12
16
|
table: "adapter_datamapper"
|
|
13
17
|
)
|
|
14
18
|
end
|
|
@@ -17,14 +21,14 @@ describe 'adapter_datamapper', unsupported: defined?(JRUBY_VERSION) || RUBY_ENGI
|
|
|
17
21
|
|
|
18
22
|
it 'does not cross contaminate when storing' do
|
|
19
23
|
first = Moneta::Adapters::DataMapper.new(
|
|
20
|
-
setup:
|
|
24
|
+
setup: database_uri,
|
|
21
25
|
table: "datamapper_first"
|
|
22
26
|
)
|
|
23
27
|
first.clear
|
|
24
28
|
|
|
25
29
|
second = Moneta::Adapters::DataMapper.new(
|
|
26
30
|
repository: :sample,
|
|
27
|
-
setup:
|
|
31
|
+
setup: database_uri,
|
|
28
32
|
table: "datamapper_second"
|
|
29
33
|
)
|
|
30
34
|
second.clear
|
|
@@ -38,14 +42,14 @@ describe 'adapter_datamapper', unsupported: defined?(JRUBY_VERSION) || RUBY_ENGI
|
|
|
38
42
|
|
|
39
43
|
it 'does not cross contaminate when deleting' do
|
|
40
44
|
first = Moneta::Adapters::DataMapper.new(
|
|
41
|
-
setup:
|
|
45
|
+
setup: database_uri,
|
|
42
46
|
table: "datamapper_first"
|
|
43
47
|
)
|
|
44
48
|
first.clear
|
|
45
49
|
|
|
46
50
|
second = Moneta::Adapters::DataMapper.new(
|
|
47
51
|
repository: :sample,
|
|
48
|
-
setup:
|
|
52
|
+
setup: database_uri,
|
|
49
53
|
table: "datamapper_second"
|
|
50
54
|
)
|
|
51
55
|
second.clear
|
|
@@ -8,7 +8,7 @@ describe "standard_datamapper", unsupported: defined?(JRUBY_VERSION) || RUBY_ENG
|
|
|
8
8
|
|
|
9
9
|
moneta_store :DataMapper do
|
|
10
10
|
{
|
|
11
|
-
setup: "mysql://#{mysql_username}:#{mysql_password}@#{mysql_host}:#{mysql_port}/#{mysql_database1}",
|
|
11
|
+
setup: "mysql://#{mysql_username}:#{mysql_password}@#{mysql_host}:#{mysql_port}/#{mysql_database1}" + (mysql_socket ? "?socket=#{mysql_socket}" : ""),
|
|
12
12
|
table: "simple_datamapper"
|
|
13
13
|
}
|
|
14
14
|
end
|
|
@@ -12,7 +12,7 @@ describe "standard_datamapper_with_expires", unsupported: defined?(JRUBY_VERSION
|
|
|
12
12
|
|
|
13
13
|
moneta_store :DataMapper do
|
|
14
14
|
{
|
|
15
|
-
setup: "mysql://#{mysql_username}:#{mysql_password}@#{mysql_host}:#{mysql_port}/#{mysql_database1}",
|
|
15
|
+
setup: "mysql://#{mysql_username}:#{mysql_password}@#{mysql_host}:#{mysql_port}/#{mysql_database1}" + (mysql_socket ? "?socket=#{mysql_socket}" : ""),
|
|
16
16
|
table: "simple_datamapper_with_expires",
|
|
17
17
|
expires: true
|
|
18
18
|
}
|
|
@@ -9,7 +9,7 @@ describe 'standard_datamapper_with_repository', unsupported: defined?(JRUBY_VERS
|
|
|
9
9
|
moneta_store :DataMapper do
|
|
10
10
|
{
|
|
11
11
|
repository: :repo,
|
|
12
|
-
setup: "mysql://#{mysql_username}:#{mysql_password}@#{mysql_host}:#{mysql_port}/#{mysql_database1}",
|
|
12
|
+
setup: "mysql://#{mysql_username}:#{mysql_password}@#{mysql_host}:#{mysql_port}/#{mysql_database1}" + (mysql_socket ? "?socket=#{mysql_socket}" : ""),
|
|
13
13
|
table: "simple_datamapper_with_repository"
|
|
14
14
|
}
|
|
15
15
|
end
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
describe 'standard_null', adapter: :Null do
|
|
2
2
|
moneta_store :Null
|
|
3
3
|
moneta_specs STANDARD_SPECS.without_increment.without_create.without_store.without_persist
|
|
4
|
+
|
|
5
|
+
it 'works when constructed with a proxy object' do
|
|
6
|
+
store = Moneta.new(:Null, expires: 1)
|
|
7
|
+
expect { store['moneta'] = 'test' }.not_to raise_error
|
|
8
|
+
end
|
|
4
9
|
end
|
|
@@ -4,9 +4,12 @@ RSpec.shared_context :sequel do
|
|
|
4
4
|
if defined?(JRUBY_VERSION)
|
|
5
5
|
uri = "jdbc:mysql://#{mysql_host}:#{mysql_port}/#{database}?user=#{mysql_username}&useSSL=false"
|
|
6
6
|
uri += "&password=#{mysql_password}" if mysql_password
|
|
7
|
+
uri += "&socket=#{mysql_socket}" if mysql_socket
|
|
7
8
|
uri
|
|
8
9
|
else
|
|
9
|
-
"mysql2://#{mysql_username}:#{mysql_password}@#{mysql_host}:#{mysql_port}/#{database}"
|
|
10
|
+
uri = "mysql2://#{mysql_username}:#{mysql_password}@#{mysql_host}:#{mysql_port}/#{database}"
|
|
11
|
+
uri += "?socket=#{mysql_socket}" if mysql_socket
|
|
12
|
+
uri
|
|
10
13
|
end
|
|
11
14
|
end
|
|
12
15
|
|
|
@@ -24,7 +24,7 @@ class MonetaStoreTest < ActionDispatch::IntegrationTest
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def get_session_id
|
|
27
|
-
render plain:
|
|
27
|
+
render plain: request.cookies['_session_id'].to_s
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def call_reset_session
|
|
@@ -60,13 +60,13 @@ class MonetaStoreTest < ActionDispatch::IntegrationTest
|
|
|
60
60
|
get '/set_session_value'
|
|
61
61
|
assert_response :success
|
|
62
62
|
assert cookies['_session_id']
|
|
63
|
-
session_cookie = cookies.
|
|
63
|
+
session_cookie = cookies.to_hash['_session_id']
|
|
64
64
|
|
|
65
65
|
get '/call_reset_session'
|
|
66
66
|
assert_response :success
|
|
67
67
|
assert_not_equal [], headers['Set-Cookie']
|
|
68
68
|
|
|
69
|
-
cookies
|
|
69
|
+
cookies.merge(session_cookie) # replace our new session_id with our old, pre-reset session_id
|
|
70
70
|
|
|
71
71
|
get '/get_session_value'
|
|
72
72
|
assert_response :success
|
|
@@ -157,7 +157,7 @@ class MonetaStoreTest < ActionDispatch::IntegrationTest
|
|
|
157
157
|
|
|
158
158
|
reset!
|
|
159
159
|
|
|
160
|
-
get
|
|
160
|
+
get "/set_session_value?_session_id=#{session_id}"
|
|
161
161
|
assert_response :success
|
|
162
162
|
assert_not_equal session_id, cookies['_session_id']
|
|
163
163
|
end
|
|
@@ -174,7 +174,7 @@ class MonetaStoreTest < ActionDispatch::IntegrationTest
|
|
|
174
174
|
ActiveSupport::Dependencies.autoload_paths << path
|
|
175
175
|
yield
|
|
176
176
|
ensure
|
|
177
|
-
ActiveSupport::Dependencies.autoload_paths.reject! {|p| p == path}
|
|
177
|
+
ActiveSupport::Dependencies.autoload_paths.reject! { |p| p == path }
|
|
178
178
|
ActiveSupport::Dependencies.clear
|
|
179
179
|
end
|
|
180
180
|
end
|
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.5.
|
|
4
|
+
version: 1.5.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Daniel Mendler
|
|
@@ -11,7 +11,7 @@ authors:
|
|
|
11
11
|
autorequire:
|
|
12
12
|
bindir: bin
|
|
13
13
|
cert_chain: []
|
|
14
|
-
date: 2022-
|
|
14
|
+
date: 2022-11-10 00:00:00.000000000 Z
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
17
17
|
name: multi_json
|
|
@@ -446,9 +446,9 @@ licenses:
|
|
|
446
446
|
- MIT
|
|
447
447
|
metadata:
|
|
448
448
|
bug_tracker_uri: https://github.com/moneta-rb/moneta/issues
|
|
449
|
-
changelog_uri: https://github.com/moneta-rb/moneta/blob/v1.5.
|
|
450
|
-
documentation_uri: https://www.rubydoc.info/gems/moneta/1.5.
|
|
451
|
-
source_code_uri: https://github.com/moneta-rb/moneta/tree/v1.5.
|
|
449
|
+
changelog_uri: https://github.com/moneta-rb/moneta/blob/v1.5.2/CHANGES
|
|
450
|
+
documentation_uri: https://www.rubydoc.info/gems/moneta/1.5.2
|
|
451
|
+
source_code_uri: https://github.com/moneta-rb/moneta/tree/v1.5.2
|
|
452
452
|
post_install_message:
|
|
453
453
|
rdoc_options: []
|
|
454
454
|
require_paths:
|
|
@@ -464,7 +464,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
464
464
|
- !ruby/object:Gem::Version
|
|
465
465
|
version: '0'
|
|
466
466
|
requirements: []
|
|
467
|
-
rubygems_version: 3.
|
|
467
|
+
rubygems_version: 3.3.25
|
|
468
468
|
signing_key:
|
|
469
469
|
specification_version: 4
|
|
470
470
|
summary: A unified interface to key/value stores, including Redis, Memcached, TokyoCabinet,
|