litestack 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.standard.yml +3 -1
  3. data/BENCHMARKS.md +3 -3
  4. data/CAVEATS.md +20 -0
  5. data/CHANGELOG.md +19 -4
  6. data/FILESYSTEMS.md +55 -0
  7. data/Gemfile +2 -0
  8. data/README.md +2 -2
  9. data/ROADMAP.md +6 -6
  10. data/assets/litestack_advantage.png +0 -0
  11. data/bench/bench.rb +2 -0
  12. data/bench/bench_cache_rails.rb +14 -17
  13. data/bench/bench_cache_raw.rb +18 -15
  14. data/bench/bench_jobs_rails.rb +3 -3
  15. data/bench/bench_jobs_raw.rb +3 -3
  16. data/bin/liteboard +16 -14
  17. data/gemfiles/rails70.gemfile +5 -0
  18. data/gemfiles/rails71.gemfile +5 -0
  19. data/gemfiles/rails71.gemfile.lock +264 -0
  20. data/lib/active_job/queue_adapters/litejob_adapter.rb +11 -3
  21. data/lib/active_record/connection_adapters/litedb_adapter.rb +17 -7
  22. data/lib/active_support/cache/litecache.rb +25 -15
  23. data/lib/generators/litestack/install/install_generator.rb +2 -2
  24. data/lib/litestack/liteboard/liteboard.rb +15 -19
  25. data/lib/litestack/liteboard/views/litecable.erb +1 -1
  26. data/lib/litestack/litecable.rb +1 -1
  27. data/lib/litestack/litecache.rb +23 -25
  28. data/lib/litestack/litedb.rb +5 -1
  29. data/lib/litestack/litejob.rb +1 -1
  30. data/lib/litestack/litejobqueue.rb +24 -14
  31. data/lib/litestack/litemetric.rb +7 -6
  32. data/lib/litestack/litequeue.rb +17 -2
  33. data/lib/litestack/litequeue.sql.yml +38 -5
  34. data/lib/litestack/litescheduler.rb +1 -2
  35. data/lib/litestack/litesearch/index.rb +11 -10
  36. data/lib/litestack/litesearch/model.rb +61 -3
  37. data/lib/litestack/litesearch/schema.rb +7 -2
  38. data/lib/litestack/litesearch/schema_adapters/backed_adapter.rb +69 -25
  39. data/lib/litestack/litesearch/schema_adapters.rb +4 -4
  40. data/lib/litestack/litesearch.rb +2 -2
  41. data/lib/litestack/litesupport.rb +7 -6
  42. data/lib/litestack/railtie.rb +4 -2
  43. data/lib/litestack/version.rb +1 -1
  44. data/lib/litestack.rb +15 -15
  45. data/lib/sequel/adapters/litedb.rb +9 -1
  46. data/lib/sequel/adapters/shared/litedb.rb +2 -2
  47. data/scripts/build_metrics.rb +2 -2
  48. data/scripts/test_cable.rb +1 -1
  49. 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 "./litescheduler"
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 enviornment (production, development, etc.)
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.load_file(@options[:config_path])
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 enviornment defined then use it, otherwise use the top level declaration
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 and count.is_a? Integer
235
+ count = 1 unless count&.is_a?(Integer)
235
236
  Litesupport::Pool.new(count) { create_connection }
236
237
  end
237
238
 
@@ -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
- # The whole point of this gem is to use sqlite3 in production.
7
- app.config.active_record.sqlite3_production_warning = false
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Litestack
4
- VERSION = "0.4.3"
4
+ VERSION = "0.4.4"
5
5
  end
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 "./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"
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 "./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
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 algoriths: ROLLBACK, ABORT,
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 aggreate_dataset_use_from_self?
880
+ def aggregate_dataset_use_from_self?
881
881
  super || @opts[:values]
882
882
  end
883
883
 
@@ -17,14 +17,14 @@ Litejobqueue.new({
17
17
  log: nil
18
18
  })
19
19
 
20
- $time = Time.now.to_i #- 10800
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 #-= (rand * 100).to_i #10 seconds in the past
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
@@ -11,7 +11,7 @@ class Client
11
11
  end
12
12
 
13
13
  def call(*args)
14
- warn "[#{Process.pid}]:#{object_id} recieved #{args} from #{@channel}"
14
+ warn "[#{Process.pid}]:#{object_id} received #{args} from #{@channel}"
15
15
  end
16
16
  end
17
17
 
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.3
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-02-15 00:00:00.000000000 Z
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
59
+ version: '3'
55
60
  - !ruby/object:Gem::Dependency
56
- name: hanami-router
61
+ name: rackup
57
62
  requirement: !ruby/object:Gem::Requirement
58
63
  requirements:
59
- - - ">="
64
+ - - "~>"
60
65
  - !ruby/object:Gem::Version
61
- version: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
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: '0'
115
+ version: '13'
111
116
  - !ruby/object:Gem::Dependency
112
- name: railties
117
+ name: activerecord
113
118
  requirement: !ruby/object:Gem::Requirement
114
119
  requirements:
115
- - - ">="
120
+ - - "~>"
116
121
  - !ruby/object:Gem::Version
117
- version: '0'
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: '0'
129
+ version: '7'
125
130
  - !ruby/object:Gem::Dependency
126
- name: minitest
131
+ name: activejob
127
132
  requirement: !ruby/object:Gem::Requirement
128
133
  requirements:
129
- - - ">="
134
+ - - "~>"
130
135
  - !ruby/object:Gem::Version
131
- version: '0'
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: '0'
143
+ version: '7'
139
144
  - !ruby/object:Gem::Dependency
140
- name: rack
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: '3.0'
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: '3.0'
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: '0'
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: '0'
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: '0'
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: '0'
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.5.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!