relaxo 1.6.1 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ee389a32f25fdf49c2a4ce9e347b8f75f865e99027836fe960029a97b614886c
4
- data.tar.gz: 7fb8ea8ad158e7cd244dba5ab7ef5b0b94b02a4207a5be4090a131ccf4b0a51b
3
+ metadata.gz: a027f37d320054b6e6a138ea76b9582ce2e106bb79a84d1f4c2ab7341d3b246c
4
+ data.tar.gz: bf137e98b7a3591715e29aa2aa7cc70f08f150676cc707b9c426c31f1fe9bc12
5
5
  SHA512:
6
- metadata.gz: 549af3e6849d9a99a86415201e2b6126f0a76f2fa8f7b27ebc7e2af0a9b1750be40efb24b14fdc8fa04fb4a49a1daaa5f6b9dbcb395e960d18fc0c3308a1c6ff
7
- data.tar.gz: 50ab5e3e2f2fde0643c276729e9954da0ade6027e597490e950f3fdc95849d9c208b32da1139fb218c49198444b6147311e6e9c7a8b0937dc7e142a6fe92e293
6
+ metadata.gz: fc8c1565cfd9bfa00e7518179f8142589135ab705c562bcb0b948804b817bc9d929d2ecff8c857ad59d36572b053a0f1340a33b0e8034aabd39ea5168c0b0eb5
7
+ data.tar.gz: 30e95d123d262733674834c64a12d4cc60e4594598c76ccaf45789a44b82760c126e492117253552e7eae0279df0c02aee36654bd52debb16d060d8c5bc855d7
checksums.yaml.gz.sig ADDED
Binary file
@@ -1,22 +1,7 @@
1
- # Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
- #
3
- # Permission is hereby granted, free of charge, to any person obtaining a copy
4
- # of this software and associated documentation files (the "Software"), to deal
5
- # in the Software without restriction, including without limitation the rights
6
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- # copies of the Software, and to permit persons to whom the Software is
8
- # furnished to do so, subject to the following conditions:
9
- #
10
- # The above copyright notice and this permission notice shall be included in
11
- # all copies or substantial portions of the Software.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- # THE SOFTWARE.
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2012-2019, by Samuel Williams.
20
5
 
21
6
  require_relative 'dataset'
22
7
 
@@ -1,22 +1,8 @@
1
- # Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
- #
3
- # Permission is hereby granted, free of charge, to any person obtaining a copy
4
- # of this software and associated documentation files (the "Software"), to deal
5
- # in the Software without restriction, including without limitation the rights
6
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- # copies of the Software, and to permit persons to whom the Software is
8
- # furnished to do so, subject to the following conditions:
9
- #
10
- # The above copyright notice and this permission notice shall be included in
11
- # all copies or substantial portions of the Software.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- # THE SOFTWARE.
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2012-2024, by Samuel Williams.
5
+ # Copyright, 2017, by Huba Nagy.
20
6
 
21
7
  require 'rugged'
22
8
 
@@ -134,7 +120,7 @@ module Relaxo
134
120
  end_time = Time.now
135
121
  elapsed_time = end_time - start_time
136
122
 
137
- Relaxo.logger.debug(self) {"#{message.inspect}: %0.3fs" % elapsed_time}
123
+ Console.debug(self) {"#{message.inspect}: %0.3fs" % elapsed_time}
138
124
  end
139
125
 
140
126
  def apply(parent, changeset, **options)
@@ -1,22 +1,7 @@
1
- # Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
- #
3
- # Permission is hereby granted, free of charge, to any person obtaining a copy
4
- # of this software and associated documentation files (the "Software"), to deal
5
- # in the Software without restriction, including without limitation the rights
6
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- # copies of the Software, and to permit persons to whom the Software is
8
- # furnished to do so, subject to the following conditions:
9
- #
10
- # The above copyright notice and this permission notice shall be included in
11
- # all copies or substantial portions of the Software.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- # THE SOFTWARE.
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2012-2019, by Samuel Williams.
20
5
 
21
6
  require 'rugged'
22
7
 
@@ -1,22 +1,7 @@
1
- # Copyright, 2017, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
- #
3
- # Permission is hereby granted, free of charge, to any person obtaining a copy
4
- # of this software and associated documentation files (the "Software"), to deal
5
- # in the Software without restriction, including without limitation the rights
6
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- # copies of the Software, and to permit persons to whom the Software is
8
- # furnished to do so, subject to the following conditions:
9
- #
10
- # The above copyright notice and this permission notice shall be included in
11
- # all copies or substantial portions of the Software.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- # THE SOFTWARE.
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2017, by Samuel Williams.
20
5
 
21
6
  require 'rugged'
22
7
 
data/lib/relaxo/logger.rb CHANGED
@@ -1,22 +1,7 @@
1
- # Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
- #
3
- # Permission is hereby granted, free of charge, to any person obtaining a copy
4
- # of this software and associated documentation files (the "Software"), to deal
5
- # in the Software without restriction, including without limitation the rights
6
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- # copies of the Software, and to permit persons to whom the Software is
8
- # furnished to do so, subject to the following conditions:
9
- #
10
- # The above copyright notice and this permission notice shall be included in
11
- # all copies or substantial portions of the Software.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- # THE SOFTWARE.
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2019, by Samuel Williams.
20
5
 
21
6
  require 'console'
22
7
 
@@ -1,23 +1,8 @@
1
- # Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
- #
3
- # Permission is hereby granted, free of charge, to any person obtaining a copy
4
- # of this software and associated documentation files (the "Software"), to deal
5
- # in the Software without restriction, including without limitation the rights
6
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- # copies of the Software, and to permit persons to whom the Software is
8
- # furnished to do so, subject to the following conditions:
9
- #
10
- # The above copyright notice and this permission notice shall be included in
11
- # all copies or substantial portions of the Software.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- # THE SOFTWARE.
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2012-2020, by Samuel Williams.
20
5
 
21
6
  module Relaxo
22
- VERSION = "1.6.1"
7
+ VERSION = "1.7.0"
23
8
  end
data/lib/relaxo.rb CHANGED
@@ -1,22 +1,7 @@
1
- # Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
- #
3
- # Permission is hereby granted, free of charge, to any person obtaining a copy
4
- # of this software and associated documentation files (the "Software"), to deal
5
- # in the Software without restriction, including without limitation the rights
6
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
- # copies of the Software, and to permit persons to whom the Software is
8
- # furnished to do so, subject to the following conditions:
9
- #
10
- # The above copyright notice and this permission notice shall be included in
11
- # all copies or substantial portions of the Software.
12
- #
13
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
- # THE SOFTWARE.
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2012-2024, by Samuel Williams.
20
5
 
21
6
  require 'relaxo/database'
22
7
 
@@ -26,8 +11,8 @@ require 'socket'
26
11
  module Relaxo
27
12
  MASTER = 'master'.freeze
28
13
 
29
- def self.connect(path, branch: nil, sync: nil, **metadata)
30
- unless File.exist?(path)
14
+ def self.connect(path, branch: nil, sync: nil, create: true, **metadata)
15
+ if !File.exist?(path) || create
31
16
  repository = Rugged::Repository.init_at(path, true)
32
17
 
33
18
  if sync || ENV['RELAXO_SYNC']
@@ -41,14 +26,16 @@ module Relaxo
41
26
 
42
27
  if config = database.config
43
28
  unless config['user.name']
44
- login = Etc.getlogin
29
+ login = Etc.getpwuid
45
30
  hostname = Socket.gethostname
46
31
 
47
- config['user.name'] = login
48
- config['user.email'] = "#{login}@#{hostname}"
32
+ if login
33
+ config['user.name'] = login.name
34
+ config['user.email'] = "#{login.name}@#{hostname}"
35
+ end
49
36
  end
50
37
  end
51
38
 
52
39
  return database
53
40
  end
54
- end
41
+ end
data/license.md ADDED
@@ -0,0 +1,23 @@
1
+ # MIT License
2
+
3
+ Copyright, 2012-2024, by Samuel Williams.
4
+ Copyright, 2017-2018, by Huba Nagy.
5
+ Copyright, 2020, by Olle Jonsson.
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ of this software and associated documentation files (the "Software"), to deal
9
+ in the Software without restriction, including without limitation the rights
10
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ copies of the Software, and to permit persons to whom the Software is
12
+ furnished to do so, subject to the following conditions:
13
+
14
+ The above copyright notice and this permission notice shall be included in all
15
+ copies or substantial portions of the Software.
16
+
17
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ SOFTWARE.
data/readme.md ADDED
@@ -0,0 +1,153 @@
1
+ # ![Relaxo](logo.svg)
2
+
3
+ Relaxo is a transactional database built on top of git. It's aim is to provide a robust interface for document storage and sorted indexes. If you prefer a higher level interface, you can try [relaxo-model](https://github.com/ioquatix/relaxo-model).
4
+
5
+ [![Development Status](https://github.com/ioquatix/relaxo/workflows/Test/badge.svg)](https://github.com/ioquatix/relaxo/actions?workflow=Test)
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ``` ruby
12
+ gem 'relaxo'
13
+ ```
14
+
15
+ And then execute:
16
+
17
+ $ bundle
18
+
19
+ Or install it yourself as:
20
+
21
+ $ gem install relaxo
22
+
23
+ ## Usage
24
+
25
+ Connect to a local database and manipulate some documents.
26
+
27
+ ``` ruby
28
+ require 'relaxo'
29
+ require 'msgpack'
30
+
31
+ DB = Relaxo.connect("test")
32
+
33
+ DB.commit(message: "Create test data") do |dataset|
34
+ object = dataset.append(MessagePack.dump({bob: 'dole'}))
35
+ dataset.write("doc1.msgpack", object)
36
+ end
37
+
38
+ DB.commit(message: "Update test data") do |dataset|
39
+ doc = MessagePack.load dataset.read('doc1.msgpack').data
40
+ doc[:foo] = 'bar'
41
+
42
+ object = dataset.append(MessagePack.dump(doc))
43
+ dataset.write("doc2.msgpack", object)
44
+ end
45
+
46
+ doc = MessagePack.load DB.current['doc2.msgpack'].data
47
+ puts doc
48
+ # => {"bob"=>"dole", "foo"=>"bar"}
49
+ ```
50
+
51
+ ### Document Storage
52
+
53
+ Relaxo uses the git persistent data structure for storing documents. This data structure exposes a file-system like interface, which stores any kind of data. This means that you are free to use JSON, or BSON, or MessagePack, or JPEG, or XML, or any combination of those.
54
+
55
+ Relaxo has a transactional model for both reading and writing.
56
+
57
+ #### Authors
58
+
59
+ By default, Relaxo sets up the repository author using the login name and hostname of the current session. You can explicitly change this by modifying `database.config`. Additionally, you can set this per-commit:
60
+
61
+ ``` ruby
62
+ database.commit(message: "Testing Enumeration", author: {user: "Alice", email: "alice@localhost"}) do |dataset|
63
+ object = dataset.append("Hello World!")
64
+ dataset.write("hello.txt", object)
65
+ end
66
+ ```
67
+
68
+ #### Reading Files
69
+
70
+ ``` ruby
71
+ path = "path/to/document"
72
+
73
+ DB.current do |dataset|
74
+ object = dataset.read(path)
75
+
76
+ puts "The object id: #{object.oid}"
77
+ puts "The object data size: #{object.size}"
78
+ puts "The object data: #{object.data.inspect}"
79
+ end
80
+ ```
81
+
82
+ #### Writing Files
83
+
84
+ ``` ruby
85
+ path = "path/to/document"
86
+ data = MessagePack.dump(document)
87
+
88
+ DB.commit(message: "Adding document") do |changeset|
89
+ object = changeset.append(data)
90
+ changeset.write(path, object)
91
+ end
92
+ ```
93
+
94
+ ### Datasets and Transactions
95
+
96
+ `Dataset`s and `Changeset`s are important concepts. Relaxo doesn't allow arbitrary access to data, but instead exposes the git persistent model for both reading and writing. The implications of this are that when reading or writing, you always see a consistent snapshot of the data store.
97
+
98
+ ### Suitability
99
+
100
+ Relaxo is designed to scale to the hundreds of thousands of documents. It's designed around the git persistent data store, and therefore has some performance and concurrency limitations due to the underlying implementation.
101
+
102
+ Because it maintains a full history of all changes, the repository would continue to grow over time by default, but there are mechanisms to deal with that.
103
+
104
+ #### Performance
105
+
106
+ Relaxo can do anywhere from 1000-10,000 inserts per second depending on how you structure the workload.
107
+
108
+ Relaxo Performance
109
+ Warming up --------------------------------------
110
+ single 129.000 i/100ms
111
+ Calculating -------------------------------------
112
+ single 6.224k (±14.7%) i/s - 114.036k in 20.000025s
113
+ single transaction should be fast
114
+ Warming up --------------------------------------
115
+ multiple 152.000 i/100ms
116
+ Calculating -------------------------------------
117
+ multiple 1.452k (±15.2%) i/s - 28.120k in 20.101831s
118
+ multiple transactions should be fast
119
+
120
+ Reading data is lighting fast as it's loaded directly from disk and cached.
121
+
122
+ ### Loading Data
123
+
124
+ As Relaxo is unapologetically based on git, you can use git directly with a non-bare working directory to add any files you like. You can even point Relaxo at an existing git repository.
125
+
126
+ ### Durability
127
+
128
+ Relaxo is based on `libgit2` and asserts that it is a transactional database. We base this assertion on:
129
+
130
+ - All writes into the object store using `libgit2` are atomic and synchronized to disk.
131
+ - All updates to refs are atomic and synchronized to disk.
132
+
133
+ Provided these two invariants are maintained, the operation of Relaxo will be safe, even if there are unexpected interruptions to the program.
134
+
135
+ The durability guarantees of Relaxo depend on [`libgit2` calling `fsync`](https://github.com/libgit2/libgit2/pull/4030), and [this being respected by the underlying hardware](http://www.evanjones.ca/intel-ssd-durability.html). Otherwise, durability cannot be guaranteed.
136
+
137
+ ## Contributing
138
+
139
+ We welcome contributions to this project.
140
+
141
+ 1. Fork it.
142
+ 2. Create your feature branch (`git checkout -b my-new-feature`).
143
+ 3. Commit your changes (`git commit -am 'Add some feature'`).
144
+ 4. Push to the branch (`git push origin my-new-feature`).
145
+ 5. Create new Pull Request.
146
+
147
+ ### Developer Certificate of Origin
148
+
149
+ This project uses the [Developer Certificate of Origin](https://developercertificate.org/). All contributors to this project must agree to this document to have their contributions accepted.
150
+
151
+ ### Contributor Covenant
152
+
153
+ This project is governed by the [Contributor Covenant](https://www.contributor-covenant.org/). All contributors and participants agree to abide by its terms.
data.tar.gz.sig ADDED
Binary file
metadata CHANGED
@@ -1,14 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaxo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.1
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
- autorequire:
8
+ - Huba Nagy
9
+ - Olle Jonsson
10
+ autorequire:
9
11
  bindir: bin
10
- cert_chain: []
11
- date: 2020-06-02 00:00:00.000000000 Z
12
+ cert_chain:
13
+ - |
14
+ -----BEGIN CERTIFICATE-----
15
+ MIIE2DCCA0CgAwIBAgIBATANBgkqhkiG9w0BAQsFADBhMRgwFgYDVQQDDA9zYW11
16
+ ZWwud2lsbGlhbXMxHTAbBgoJkiaJk/IsZAEZFg1vcmlvbnRyYW5zZmVyMRIwEAYK
17
+ CZImiZPyLGQBGRYCY28xEjAQBgoJkiaJk/IsZAEZFgJuejAeFw0yMjA4MDYwNDUz
18
+ MjRaFw0zMjA4MDMwNDUzMjRaMGExGDAWBgNVBAMMD3NhbXVlbC53aWxsaWFtczEd
19
+ MBsGCgmSJomT8ixkARkWDW9yaW9udHJhbnNmZXIxEjAQBgoJkiaJk/IsZAEZFgJj
20
+ bzESMBAGCgmSJomT8ixkARkWAm56MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB
21
+ igKCAYEAomvSopQXQ24+9DBB6I6jxRI2auu3VVb4nOjmmHq7XWM4u3HL+pni63X2
22
+ 9qZdoq9xt7H+RPbwL28LDpDNflYQXoOhoVhQ37Pjn9YDjl8/4/9xa9+NUpl9XDIW
23
+ sGkaOY0eqsQm1pEWkHJr3zn/fxoKPZPfaJOglovdxf7dgsHz67Xgd/ka+Wo1YqoE
24
+ e5AUKRwUuvaUaumAKgPH+4E4oiLXI4T1Ff5Q7xxv6yXvHuYtlMHhYfgNn8iiW8WN
25
+ XibYXPNP7NtieSQqwR/xM6IRSoyXKuS+ZNGDPUUGk8RoiV/xvVN4LrVm9upSc0ss
26
+ RZ6qwOQmXCo/lLcDUxJAgG95cPw//sI00tZan75VgsGzSWAOdjQpFM0l4dxvKwHn
27
+ tUeT3ZsAgt0JnGqNm2Bkz81kG4A2hSyFZTFA8vZGhp+hz+8Q573tAR89y9YJBdYM
28
+ zp0FM4zwMNEUwgfRzv1tEVVUEXmoFCyhzonUUw4nE4CFu/sE3ffhjKcXcY//qiSW
29
+ xm4erY3XAgMBAAGjgZowgZcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
30
+ BBYEFO9t7XWuFf2SKLmuijgqR4sGDlRsMC4GA1UdEQQnMCWBI3NhbXVlbC53aWxs
31
+ aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MC4GA1UdEgQnMCWBI3NhbXVlbC53aWxs
32
+ aWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MA0GCSqGSIb3DQEBCwUAA4IBgQB5sxkE
33
+ cBsSYwK6fYpM+hA5B5yZY2+L0Z+27jF1pWGgbhPH8/FjjBLVn+VFok3CDpRqwXCl
34
+ xCO40JEkKdznNy2avOMra6PFiQyOE74kCtv7P+Fdc+FhgqI5lMon6tt9rNeXmnW/
35
+ c1NaMRdxy999hmRGzUSFjozcCwxpy/LwabxtdXwXgSay4mQ32EDjqR1TixS1+smp
36
+ 8C/NCWgpIfzpHGJsjvmH2wAfKtTTqB9CVKLCWEnCHyCaRVuKkrKjqhYCdmMBqCws
37
+ JkxfQWC+jBVeG9ZtPhQgZpfhvh+6hMhraUYRQ6XGyvBqEUe+yo6DKIT3MtGE2+CP
38
+ eX9i9ZWBydWb8/rvmwmX2kkcBbX0hZS1rcR593hGc61JR6lvkGYQ2MYskBveyaxt
39
+ Q2K9NVun/S785AP05vKkXZEFYxqG6EW012U4oLcFl5MySFajYXRYbuUpH6AY+HP8
40
+ voD0MPg1DssDLKwXyt1eKD/+Fq0bFWhwVM/1XiAXL7lyYUyOq24KHgQ2Csg=
41
+ -----END CERTIFICATE-----
42
+ date: 2024-05-08 00:00:00.000000000 Z
12
43
  dependencies:
13
44
  - !ruby/object:Gem::Dependency
14
45
  name: console
@@ -38,111 +69,12 @@ dependencies:
38
69
  - - ">="
39
70
  - !ruby/object:Gem::Version
40
71
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: bake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: bake-bundler
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: bake-modernize
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: bundler
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: covered
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: msgpack
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- name: rspec
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '3.6'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '3.6'
139
- description:
140
- email:
72
+ description:
73
+ email:
141
74
  executables: []
142
75
  extensions: []
143
76
  extra_rdoc_files: []
144
77
  files:
145
- - lib/.DS_Store
146
78
  - lib/relaxo.rb
147
79
  - lib/relaxo/changeset.rb
148
80
  - lib/relaxo/database.rb
@@ -150,12 +82,15 @@ files:
150
82
  - lib/relaxo/directory.rb
151
83
  - lib/relaxo/logger.rb
152
84
  - lib/relaxo/version.rb
85
+ - license.md
86
+ - readme.md
153
87
  homepage: https://github.com/ioquatix/relaxo
154
88
  licenses:
155
89
  - MIT
156
90
  metadata:
157
91
  funding_uri: https://github.com/sponsors/ioquatix/
158
- post_install_message:
92
+ source_code_uri: https://github.com/ioquatix/relaxo.git
93
+ post_install_message:
159
94
  rdoc_options: []
160
95
  require_paths:
161
96
  - lib
@@ -163,15 +98,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
163
98
  requirements:
164
99
  - - ">="
165
100
  - !ruby/object:Gem::Version
166
- version: '2.5'
101
+ version: '3.1'
167
102
  required_rubygems_version: !ruby/object:Gem::Requirement
168
103
  requirements:
169
104
  - - ">="
170
105
  - !ruby/object:Gem::Version
171
106
  version: '0'
172
107
  requirements: []
173
- rubygems_version: 3.1.2
174
- signing_key:
108
+ rubygems_version: 3.5.3
109
+ signing_key:
175
110
  specification_version: 4
176
111
  summary: Relaxo is versioned document database built on top of git.
177
112
  test_files: []
metadata.gz.sig ADDED
Binary file
data/lib/.DS_Store DELETED
Binary file