litestack 0.4.3 → 0.4.4
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/.standard.yml +3 -1
- data/BENCHMARKS.md +3 -3
- data/CAVEATS.md +20 -0
- data/CHANGELOG.md +19 -4
- data/FILESYSTEMS.md +55 -0
- data/Gemfile +2 -0
- data/README.md +2 -2
- data/ROADMAP.md +6 -6
- data/assets/litestack_advantage.png +0 -0
- data/bench/bench.rb +2 -0
- data/bench/bench_cache_rails.rb +14 -17
- data/bench/bench_cache_raw.rb +18 -15
- data/bench/bench_jobs_rails.rb +3 -3
- data/bench/bench_jobs_raw.rb +3 -3
- data/bin/liteboard +16 -14
- data/gemfiles/rails70.gemfile +5 -0
- data/gemfiles/rails71.gemfile +5 -0
- data/gemfiles/rails71.gemfile.lock +264 -0
- data/lib/active_job/queue_adapters/litejob_adapter.rb +11 -3
- data/lib/active_record/connection_adapters/litedb_adapter.rb +17 -7
- data/lib/active_support/cache/litecache.rb +25 -15
- data/lib/generators/litestack/install/install_generator.rb +2 -2
- data/lib/litestack/liteboard/liteboard.rb +15 -19
- data/lib/litestack/liteboard/views/litecable.erb +1 -1
- data/lib/litestack/litecable.rb +1 -1
- data/lib/litestack/litecache.rb +23 -25
- data/lib/litestack/litedb.rb +5 -1
- data/lib/litestack/litejob.rb +1 -1
- data/lib/litestack/litejobqueue.rb +24 -14
- data/lib/litestack/litemetric.rb +7 -6
- data/lib/litestack/litequeue.rb +17 -2
- data/lib/litestack/litequeue.sql.yml +38 -5
- data/lib/litestack/litescheduler.rb +1 -2
- data/lib/litestack/litesearch/index.rb +11 -10
- data/lib/litestack/litesearch/model.rb +61 -3
- data/lib/litestack/litesearch/schema.rb +7 -2
- data/lib/litestack/litesearch/schema_adapters/backed_adapter.rb +69 -25
- data/lib/litestack/litesearch/schema_adapters.rb +4 -4
- data/lib/litestack/litesearch.rb +2 -2
- data/lib/litestack/litesupport.rb +7 -6
- data/lib/litestack/railtie.rb +4 -2
- data/lib/litestack/version.rb +1 -1
- data/lib/litestack.rb +15 -15
- data/lib/sequel/adapters/litedb.rb +9 -1
- data/lib/sequel/adapters/shared/litedb.rb +2 -2
- data/scripts/build_metrics.rb +2 -2
- data/scripts/test_cable.rb +1 -1
- metadata +95 -59
@@ -6,15 +6,16 @@ require "oj"
|
|
6
6
|
require "yaml"
|
7
7
|
require "pathname"
|
8
8
|
require "fileutils"
|
9
|
+
require "erb"
|
9
10
|
|
10
|
-
require_relative "
|
11
|
+
require_relative "litescheduler"
|
11
12
|
|
12
13
|
module Litesupport
|
13
14
|
class Error < StandardError; end
|
14
15
|
|
15
16
|
# Detect the Rack or Rails environment.
|
16
17
|
def self.detect_environment
|
17
|
-
if defined? Rails
|
18
|
+
if defined?(Rails) && Rails.respond_to?(:env)
|
18
19
|
Rails.env
|
19
20
|
elsif ENV["RACK_ENV"]
|
20
21
|
ENV["RACK_ENV"]
|
@@ -174,7 +175,7 @@ module Litesupport
|
|
174
175
|
end
|
175
176
|
|
176
177
|
def configure(options = {})
|
177
|
-
# detect
|
178
|
+
# detect environment (production, development, etc.)
|
178
179
|
defaults = begin
|
179
180
|
self.class::DEFAULT_OPTIONS
|
180
181
|
rescue
|
@@ -182,11 +183,11 @@ module Litesupport
|
|
182
183
|
end
|
183
184
|
@options = defaults.merge(options)
|
184
185
|
config = begin
|
185
|
-
YAML.
|
186
|
+
YAML.load(ERB.new(File.read(@options[:config_path])).result)
|
186
187
|
rescue
|
187
188
|
{}
|
188
189
|
end # an empty hash won't hurt
|
189
|
-
config = config[Litesupport.environment] if config[Litesupport.environment] # if there is a config for the current
|
190
|
+
config = config[Litesupport.environment] if config[Litesupport.environment] # if there is a config for the current environment defined then use it, otherwise use the top level declaration
|
190
191
|
config.keys.each do |k| # symbolize keys
|
191
192
|
config[k.to_sym] = config[k]
|
192
193
|
config.delete k
|
@@ -231,7 +232,7 @@ module Litesupport
|
|
231
232
|
end
|
232
233
|
|
233
234
|
def create_pooled_connection(count = 1)
|
234
|
-
count = 1 unless count
|
235
|
+
count = 1 unless count&.is_a?(Integer)
|
235
236
|
Litesupport::Pool.new(count) { create_connection }
|
236
237
|
end
|
237
238
|
|
data/lib/litestack/railtie.rb
CHANGED
@@ -3,8 +3,10 @@ require "rails/railtie"
|
|
3
3
|
module Litestack
|
4
4
|
class Railtie < ::Rails::Railtie
|
5
5
|
initializer :disable_production_sqlite_warning do |app|
|
6
|
-
|
7
|
-
|
6
|
+
if config.active_record.key?(:sqlite3_production_warning)
|
7
|
+
# The whole point of this gem is to use sqlite3 in production.
|
8
|
+
app.config.active_record.sqlite3_production_warning = false
|
9
|
+
end
|
8
10
|
end
|
9
11
|
end
|
10
12
|
end
|
data/lib/litestack/version.rb
CHANGED
data/lib/litestack.rb
CHANGED
@@ -1,23 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# load core classes
|
4
|
-
require_relative "
|
5
|
-
require_relative "
|
6
|
-
require_relative "
|
7
|
-
require_relative "
|
8
|
-
require_relative "
|
9
|
-
require_relative "
|
10
|
-
require_relative "
|
11
|
-
require_relative "
|
4
|
+
require_relative "litestack/version"
|
5
|
+
require_relative "litestack/litescheduler"
|
6
|
+
require_relative "litestack/litesupport"
|
7
|
+
require_relative "litestack/litemetric"
|
8
|
+
require_relative "litestack/litedb"
|
9
|
+
require_relative "litestack/litecache"
|
10
|
+
require_relative "litestack/litejob"
|
11
|
+
require_relative "litestack/litecable"
|
12
12
|
|
13
13
|
# conditionally load integration with other libraries
|
14
|
-
require_relative "
|
15
|
-
require_relative "
|
16
|
-
require_relative "
|
17
|
-
require_relative "
|
18
|
-
require_relative "
|
19
|
-
require_relative "
|
20
|
-
require_relative "
|
14
|
+
require_relative "sequel/adapters/litedb" if defined? Sequel
|
15
|
+
require_relative "active_record/connection_adapters/litedb_adapter" if defined? ActiveRecord
|
16
|
+
require_relative "railties/rails/commands/dbconsole" if defined?(Rails) && defined?(ActiveRecord)
|
17
|
+
require_relative "active_support/cache/litecache" if defined? ActiveSupport
|
18
|
+
require_relative "active_job/queue_adapters/litejob_adapter" if defined? ActiveJob
|
19
|
+
require_relative "action_cable/subscription_adapter/litecable" if defined? ActionCable
|
20
|
+
require_relative "litestack/railtie" if defined? Rails::Railtie
|
21
21
|
|
22
22
|
module Litestack
|
23
23
|
class NotImplementedError < RuntimeError; end
|
@@ -19,6 +19,7 @@ module Sequel
|
|
19
19
|
sqlite3_opts = {}
|
20
20
|
sqlite3_opts[:readonly] = typecast_value_boolean(opts[:readonly]) if opts.has_key?(:readonly)
|
21
21
|
db = ::Litedb.new(opts[:database].to_s, sqlite3_opts)
|
22
|
+
@raw_db = db
|
22
23
|
|
23
24
|
self.transaction_mode = :immediate
|
24
25
|
|
@@ -33,12 +34,19 @@ module Sequel
|
|
33
34
|
end
|
34
35
|
|
35
36
|
db.instance_variable_set(:@prepared_statements, {})
|
36
|
-
@raw_db = db
|
37
37
|
db
|
38
38
|
end
|
39
|
+
|
40
|
+
def sqlite_version
|
41
|
+
@raw_db.sqlite_version
|
42
|
+
end
|
43
|
+
|
39
44
|
end
|
40
45
|
|
41
46
|
class Dataset < Sequel::SQLite::Dataset
|
47
|
+
def supports_insert_select?
|
48
|
+
true
|
49
|
+
end
|
42
50
|
end
|
43
51
|
end
|
44
52
|
end
|
@@ -715,7 +715,7 @@ module Sequel
|
|
715
715
|
|
716
716
|
# Handle uniqueness violations when inserting, by using a specified
|
717
717
|
# resolution algorithm. With no options, uses INSERT OR REPLACE. SQLite
|
718
|
-
# supports the following conflict resolution
|
718
|
+
# supports the following conflict resolution algorithms: ROLLBACK, ABORT,
|
719
719
|
# FAIL, IGNORE and REPLACE.
|
720
720
|
#
|
721
721
|
# On SQLite 3.24.0+, you can pass a hash to use an ON CONFLICT clause.
|
@@ -877,7 +877,7 @@ module Sequel
|
|
877
877
|
end
|
878
878
|
|
879
879
|
# Use from_self for aggregate dataset using VALUES.
|
880
|
-
def
|
880
|
+
def aggregate_dataset_use_from_self?
|
881
881
|
super || @opts[:values]
|
882
882
|
end
|
883
883
|
|
data/scripts/build_metrics.rb
CHANGED
@@ -17,14 +17,14 @@ Litejobqueue.new({
|
|
17
17
|
log: nil
|
18
18
|
})
|
19
19
|
|
20
|
-
$time = Time.now.to_i
|
20
|
+
$time = Time.now.to_i # - 10800
|
21
21
|
$start_time = Time.now.to_i
|
22
22
|
|
23
23
|
class NormalJob
|
24
24
|
include Litejob
|
25
25
|
self.queue = "normal"
|
26
26
|
def perform(time)
|
27
|
-
$time = time
|
27
|
+
$time = time # -= (rand * 100).to_i #10 seconds in the past
|
28
28
|
sleep 0.001
|
29
29
|
warn "performing some normal action"
|
30
30
|
end
|
data/scripts/test_cable.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: litestack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mohamed Hassan
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date: 2024-
|
10
|
+
date: 2024-05-21 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: sqlite3
|
@@ -16,183 +15,216 @@ dependencies:
|
|
16
15
|
requirements:
|
17
16
|
- - ">="
|
18
17
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
18
|
+
version: 1.6.0
|
19
|
+
- - "<"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 2.0.0
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
23
25
|
requirements:
|
24
26
|
- - ">="
|
25
27
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
28
|
+
version: 1.6.0
|
29
|
+
- - "<"
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 2.0.0
|
27
32
|
- !ruby/object:Gem::Dependency
|
28
33
|
name: oj
|
29
34
|
requirement: !ruby/object:Gem::Requirement
|
30
35
|
requirements:
|
31
|
-
- - "
|
36
|
+
- - "~>"
|
32
37
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
38
|
+
version: '3'
|
34
39
|
type: :runtime
|
35
40
|
prerelease: false
|
36
41
|
version_requirements: !ruby/object:Gem::Requirement
|
37
42
|
requirements:
|
38
|
-
- - "
|
43
|
+
- - "~>"
|
39
44
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
45
|
+
version: '3'
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: rack
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
44
49
|
requirements:
|
45
|
-
- - "
|
50
|
+
- - "~>"
|
46
51
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
52
|
+
version: '3'
|
48
53
|
type: :runtime
|
49
54
|
prerelease: false
|
50
55
|
version_requirements: !ruby/object:Gem::Requirement
|
51
56
|
requirements:
|
52
|
-
- - "
|
57
|
+
- - "~>"
|
53
58
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
59
|
+
version: '3'
|
55
60
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
61
|
+
name: rackup
|
57
62
|
requirement: !ruby/object:Gem::Requirement
|
58
63
|
requirements:
|
59
|
-
- - "
|
64
|
+
- - "~>"
|
60
65
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
66
|
+
version: '2'
|
62
67
|
type: :runtime
|
63
68
|
prerelease: false
|
64
69
|
version_requirements: !ruby/object:Gem::Requirement
|
65
70
|
requirements:
|
66
|
-
- - "
|
71
|
+
- - "~>"
|
67
72
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
73
|
+
version: '2'
|
69
74
|
- !ruby/object:Gem::Dependency
|
70
75
|
name: tilt
|
71
76
|
requirement: !ruby/object:Gem::Requirement
|
72
77
|
requirements:
|
73
|
-
- - "
|
78
|
+
- - "~>"
|
74
79
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
80
|
+
version: '2'
|
76
81
|
type: :runtime
|
77
82
|
prerelease: false
|
78
83
|
version_requirements: !ruby/object:Gem::Requirement
|
79
84
|
requirements:
|
80
|
-
- - "
|
85
|
+
- - "~>"
|
81
86
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
87
|
+
version: '2'
|
83
88
|
- !ruby/object:Gem::Dependency
|
84
89
|
name: erubi
|
85
90
|
requirement: !ruby/object:Gem::Requirement
|
86
91
|
requirements:
|
87
|
-
- - "
|
92
|
+
- - "~>"
|
88
93
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
94
|
+
version: '1'
|
90
95
|
type: :runtime
|
91
96
|
prerelease: false
|
92
97
|
version_requirements: !ruby/object:Gem::Requirement
|
93
98
|
requirements:
|
94
|
-
- - "
|
99
|
+
- - "~>"
|
95
100
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
101
|
+
version: '1'
|
97
102
|
- !ruby/object:Gem::Dependency
|
98
103
|
name: rake
|
99
104
|
requirement: !ruby/object:Gem::Requirement
|
100
105
|
requirements:
|
101
|
-
- - "
|
106
|
+
- - "~>"
|
102
107
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
108
|
+
version: '13'
|
104
109
|
type: :development
|
105
110
|
prerelease: false
|
106
111
|
version_requirements: !ruby/object:Gem::Requirement
|
107
112
|
requirements:
|
108
|
-
- - "
|
113
|
+
- - "~>"
|
109
114
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
115
|
+
version: '13'
|
111
116
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
117
|
+
name: activerecord
|
113
118
|
requirement: !ruby/object:Gem::Requirement
|
114
119
|
requirements:
|
115
|
-
- - "
|
120
|
+
- - "~>"
|
116
121
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
122
|
+
version: '7'
|
118
123
|
type: :development
|
119
124
|
prerelease: false
|
120
125
|
version_requirements: !ruby/object:Gem::Requirement
|
121
126
|
requirements:
|
122
|
-
- - "
|
127
|
+
- - "~>"
|
123
128
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
129
|
+
version: '7'
|
125
130
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
131
|
+
name: activejob
|
127
132
|
requirement: !ruby/object:Gem::Requirement
|
128
133
|
requirements:
|
129
|
-
- - "
|
134
|
+
- - "~>"
|
130
135
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
136
|
+
version: '7'
|
132
137
|
type: :development
|
133
138
|
prerelease: false
|
134
139
|
version_requirements: !ruby/object:Gem::Requirement
|
135
140
|
requirements:
|
136
|
-
- - "
|
141
|
+
- - "~>"
|
137
142
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
143
|
+
version: '7'
|
139
144
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
145
|
+
name: railties
|
146
|
+
requirement: !ruby/object:Gem::Requirement
|
147
|
+
requirements:
|
148
|
+
- - "~>"
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '7'
|
151
|
+
type: :development
|
152
|
+
prerelease: false
|
153
|
+
version_requirements: !ruby/object:Gem::Requirement
|
154
|
+
requirements:
|
155
|
+
- - "~>"
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '7'
|
158
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
name: minitest
|
141
160
|
requirement: !ruby/object:Gem::Requirement
|
142
161
|
requirements:
|
143
162
|
- - "~>"
|
144
163
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
164
|
+
version: '5'
|
146
165
|
type: :development
|
147
166
|
prerelease: false
|
148
167
|
version_requirements: !ruby/object:Gem::Requirement
|
149
168
|
requirements:
|
150
169
|
- - "~>"
|
151
170
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
171
|
+
version: '5'
|
153
172
|
- !ruby/object:Gem::Dependency
|
154
173
|
name: simplecov
|
155
174
|
requirement: !ruby/object:Gem::Requirement
|
156
175
|
requirements:
|
157
|
-
- - "
|
176
|
+
- - "~>"
|
158
177
|
- !ruby/object:Gem::Version
|
159
|
-
version: '0'
|
178
|
+
version: '0.2'
|
160
179
|
type: :development
|
161
180
|
prerelease: false
|
162
181
|
version_requirements: !ruby/object:Gem::Requirement
|
163
182
|
requirements:
|
164
|
-
- - "
|
183
|
+
- - "~>"
|
165
184
|
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
185
|
+
version: '0.2'
|
167
186
|
- !ruby/object:Gem::Dependency
|
168
187
|
name: standard
|
169
188
|
requirement: !ruby/object:Gem::Requirement
|
170
189
|
requirements:
|
171
|
-
- - "
|
190
|
+
- - "~>"
|
172
191
|
- !ruby/object:Gem::Version
|
173
|
-
version: '
|
192
|
+
version: '1'
|
174
193
|
type: :development
|
175
194
|
prerelease: false
|
176
195
|
version_requirements: !ruby/object:Gem::Requirement
|
177
196
|
requirements:
|
178
|
-
- - "
|
197
|
+
- - "~>"
|
179
198
|
- !ruby/object:Gem::Version
|
180
|
-
version: '
|
199
|
+
version: '1'
|
181
200
|
- !ruby/object:Gem::Dependency
|
182
201
|
name: sequel
|
183
202
|
requirement: !ruby/object:Gem::Requirement
|
184
203
|
requirements:
|
185
|
-
- - "
|
204
|
+
- - "~>"
|
186
205
|
- !ruby/object:Gem::Version
|
187
|
-
version: '
|
206
|
+
version: '5'
|
188
207
|
type: :development
|
189
208
|
prerelease: false
|
190
209
|
version_requirements: !ruby/object:Gem::Requirement
|
191
210
|
requirements:
|
192
|
-
- - "
|
211
|
+
- - "~>"
|
212
|
+
- !ruby/object:Gem::Version
|
213
|
+
version: '5'
|
214
|
+
- !ruby/object:Gem::Dependency
|
215
|
+
name: debug
|
216
|
+
requirement: !ruby/object:Gem::Requirement
|
217
|
+
requirements:
|
218
|
+
- - "~>"
|
219
|
+
- !ruby/object:Gem::Version
|
220
|
+
version: '1'
|
221
|
+
type: :development
|
222
|
+
prerelease: false
|
223
|
+
version_requirements: !ruby/object:Gem::Requirement
|
224
|
+
requirements:
|
225
|
+
- - "~>"
|
193
226
|
- !ruby/object:Gem::Version
|
194
|
-
version: '
|
195
|
-
description:
|
227
|
+
version: '1'
|
196
228
|
email:
|
197
229
|
- oldmoe@gmail.com
|
198
230
|
executables:
|
@@ -202,7 +234,9 @@ extra_rdoc_files: []
|
|
202
234
|
files:
|
203
235
|
- ".standard.yml"
|
204
236
|
- BENCHMARKS.md
|
237
|
+
- CAVEATS.md
|
205
238
|
- CHANGELOG.md
|
239
|
+
- FILESYSTEMS.md
|
206
240
|
- Gemfile
|
207
241
|
- LICENSE.txt
|
208
242
|
- README.md
|
@@ -219,6 +253,7 @@ files:
|
|
219
253
|
- assets/litejob_logo_teal.png
|
220
254
|
- assets/litemetric_logo_teal.png
|
221
255
|
- assets/litesearch_logo_teal.png
|
256
|
+
- assets/litestack_advantage.png
|
222
257
|
- assets/litestack_logo_teal.png
|
223
258
|
- assets/litestack_logo_teal_large.png
|
224
259
|
- assets/topic_page.png
|
@@ -232,6 +267,9 @@ files:
|
|
232
267
|
- bench/skjob.rb
|
233
268
|
- bench/uljob.rb
|
234
269
|
- bin/liteboard
|
270
|
+
- gemfiles/rails70.gemfile
|
271
|
+
- gemfiles/rails71.gemfile
|
272
|
+
- gemfiles/rails71.gemfile.lock
|
235
273
|
- lib/action_cable/subscription_adapter/litecable.rb
|
236
274
|
- lib/active_job/queue_adapters/litejob_adapter.rb
|
237
275
|
- lib/active_record/connection_adapters/litedb_adapter.rb
|
@@ -293,7 +331,6 @@ metadata:
|
|
293
331
|
homepage_uri: https://github.com/oldmoe/litestack
|
294
332
|
source_code_uri: https://github.com/oldmoe/litestack
|
295
333
|
changelog_uri: https://github.com/oldmoe/litestack/CHANEGELOG.md
|
296
|
-
post_install_message:
|
297
334
|
rdoc_options: []
|
298
335
|
require_paths:
|
299
336
|
- lib
|
@@ -309,8 +346,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
309
346
|
- !ruby/object:Gem::Version
|
310
347
|
version: '0'
|
311
348
|
requirements: []
|
312
|
-
rubygems_version: 3.
|
313
|
-
signing_key:
|
349
|
+
rubygems_version: 3.6.0.dev
|
314
350
|
specification_version: 4
|
315
351
|
summary: A SQLite based, lightning fast, super efficient and dead simple to setup
|
316
352
|
and use database, cache and job queue for Ruby and Rails applications!
|