litestack 0.1.7 → 0.2.0

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.
data/lib/litestack.rb CHANGED
@@ -1,15 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # load core classes
4
- #require_relative "./version"
5
- require_relative "litestack/litesupport"
6
- #require_relative "litedb"
7
- require_relative "litestack/litecache"
8
- require_relative "litestack/litejob"
4
+ require_relative "./litestack/version"
5
+ require_relative "./litestack/litesupport"
6
+ require_relative "./litestack/litemetric"
7
+ require_relative "./litestack/litedb"
8
+ require_relative "./litestack/litecache"
9
+ require_relative "./litestack/litejob"
10
+ require_relative "./litestack/litecable"
9
11
 
10
12
  # conditionally load integration with other libraries
11
- #require_relative "../sequel/adapters/litedb" if defined? Sequel
12
- #require_relative "../active_record/connection_adapters/litedb_adapter" if defined? ActiveRecord
13
- require_relative "active_support/cache/litecache" if defined? ActiveSupport
14
- require_relative "active_job/queue_adapters/litejob_adapter" if defined? ActiveJob
15
- #require_relative "../railties/rails/commands/dbconsole" if defined? Rails
13
+ require_relative "./sequel/adapters/litedb" if defined? Sequel
14
+ require_relative "./active_record/connection_adapters/litedb_adapter" if defined? ActiveRecord
15
+ require_relative "./railties/rails/commands/dbconsole" if defined? Rails && defined? ActiveRecord
16
+ require_relative "./active_support/cache/litecache" if defined? ActiveSupport
17
+ require_relative "./active_job/queue_adapters/litejob_adapter" if defined? ActiveJob
18
+ require_relative "./action_cable/subscription_adapter/litecable" if defined? ActionCable
19
+
20
+ module Litestack
21
+ class NotImplementedError < Exception; end
22
+ class TimeoutError < Exception; end
23
+ class DeadlockError < Exception; end
24
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: litestack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mohamed Hassan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-05 00:00:00.000000000 Z
11
+ date: 2023-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sqlite3
@@ -52,6 +52,7 @@ files:
52
52
  - README.md
53
53
  - Rakefile
54
54
  - WHYLITESTACK.md
55
+ - assets/litecable_logo_teal.png
55
56
  - assets/litecache_logo_teal.png
56
57
  - assets/litedb_logo_teal.png
57
58
  - assets/litejob_logo_teal.png
@@ -63,22 +64,28 @@ files:
63
64
  - bench/bench_jobs_rails.rb
64
65
  - bench/bench_jobs_raw.rb
65
66
  - bench/bench_queue.rb
66
- - bench/bench_rails.rb
67
- - bench/bench_raw.rb
68
67
  - bench/rails_job.rb
69
68
  - bench/skjob.rb
70
69
  - bench/uljob.rb
70
+ - lib/action_cable/subscription_adapter/litecable.rb
71
71
  - lib/active_job/queue_adapters/litejob_adapter.rb
72
- - lib/active_job/queue_adapters/ultralite_adapter.rb
73
72
  - lib/active_record/connection_adapters/litedb_adapter.rb
74
73
  - lib/active_support/cache/litecache.rb
75
74
  - lib/litestack.rb
75
+ - lib/litestack/litecable.rb
76
+ - lib/litestack/litecable.sql.yml
76
77
  - lib/litestack/litecache.rb
78
+ - lib/litestack/litecache.sql.yml
79
+ - lib/litestack/litecache.yml
77
80
  - lib/litestack/litedb.rb
78
81
  - lib/litestack/litejob.rb
79
82
  - lib/litestack/litejobqueue.rb
83
+ - lib/litestack/litemetric.rb
84
+ - lib/litestack/litemetric.sql.yml
80
85
  - lib/litestack/litequeue.rb
86
+ - lib/litestack/litequeue.sql.yml
81
87
  - lib/litestack/litesupport.rb
88
+ - lib/litestack/metrics_app.rb
82
89
  - lib/litestack/version.rb
83
90
  - lib/railties/rails/commands/dbconsole.rb
84
91
  - lib/sequel/adapters/litedb.rb
@@ -108,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
115
  - !ruby/object:Gem::Version
109
116
  version: '0'
110
117
  requirements: []
111
- rubygems_version: 3.4.6
118
+ rubygems_version: 3.4.8
112
119
  signing_key:
113
120
  specification_version: 4
114
121
  summary: A SQLite based, lightning fast, super efficient and dead simple to setup
data/bench/bench_rails.rb DELETED
@@ -1,81 +0,0 @@
1
- require 'ultralite'
2
- require 'active_support'
3
- require './bench'
4
-
5
- cache = ActiveSupport::Cache.lookup_store(:ultralite_cache_store, {})
6
- mem = ActiveSupport::Cache.lookup_store(:ultralite_cache_store, {path: ":memory:"})
7
- redis = ActiveSupport::Cache.lookup_store(:redis_cache_store, {})
8
-
9
- values = []
10
- keys = []
11
- count = 1000
12
-
13
- [10, 100, 1000, 10000].each do |size|
14
- count.times do
15
- keys << random_str(10)
16
- values << random_str(size)
17
- end
18
-
19
- random_keys = keys.shuffle
20
- puts "Benchmarks for values of size #{size} bytes"
21
- puts "=========================================================="
22
- puts "== Writes =="
23
- bench("Ultralite cache writes", count) do |i|
24
- cache.write(keys[i], values[i])
25
- end
26
-
27
- bench("Ultralite memory cache writes", count) do |i|
28
- mem.write(keys[i], values[i])
29
- end
30
-
31
- bench("Redis writes", count) do |i|
32
- redis.write(keys[i], values[i])
33
- end
34
-
35
- puts "== Reads =="
36
- bench("Ultralite cache reads", count) do |i|
37
- cache.read(random_keys[i])
38
- end
39
-
40
- bench("Ultralite memory cache reads", count) do |i|
41
- mem.read(random_keys[i])
42
- end
43
-
44
- bench("Redis reads", count) do |i|
45
- redis.read(random_keys[i])
46
- end
47
- puts "=========================================================="
48
-
49
-
50
- keys = []
51
- values = []
52
- end
53
-
54
-
55
- cache.write("somekey", 1, raw: true)
56
- #puts cache.read("somekey", raw: true)
57
-
58
- mem.write("somekey", 1, raw: true)
59
- #puts mem.read("somekey", raw: true)
60
-
61
- redis.write("somekey", 1, raw: true)
62
- #puts redis.read("somekey", raw: true)
63
-
64
- puts "Benchmarks for incrementing integer values"
65
- puts "=========================================================="
66
-
67
- bench("Ultralite cache increment", count) do
68
- cache.increment("somekey", 1, raw: true)
69
- end
70
-
71
- bench("Ultralite memory cache increment", count) do
72
- mem.increment("somekey", 1, raw: true)
73
- end
74
-
75
- bench("Redis increment", count) do
76
- redis.increment("somekey", 1, raw: true )
77
- end
78
-
79
- cache.clear
80
- redis.clear
81
-
data/bench/bench_raw.rb DELETED
@@ -1,72 +0,0 @@
1
- require 'ultralite'
2
- require './bench'
3
- require 'redis'
4
- require 'sqlite3'
5
-
6
- cache = Ultralite::Cache.new # default settings
7
- #mem = Ultralite::Cache.new(path: ":memory:") # default settings
8
- redis = Redis.new # default settings
9
-
10
- values = []
11
- keys = []
12
- count = 1000
13
- count.times { keys << random_str(10) }
14
-
15
- [10, 100, 1000, 10000].each do |size|
16
- count.times do
17
- values << random_str(size)
18
- end
19
-
20
- random_keys = keys.shuffle
21
- puts "Benchmarks for values of size #{size} bytes"
22
- puts "=========================================================="
23
- puts "== Writes =="
24
- bench("Ultralite cache writes", count) do |i|
25
- cache.set(keys[i], values[i])
26
- end
27
-
28
- # bench("Ultralite memory cache writes", count) do |i|
29
- # mem.set(keys[i], values[i])
30
- # end
31
-
32
- bench("Redis writes", count) do |i|
33
- redis.set(keys[i], values[i])
34
- end
35
-
36
- puts "== Reads =="
37
- bench("Ultralite cache reads", count) do |i|
38
- cache.get(random_keys[i])
39
- end
40
-
41
- # bench("Ultralite memory cache reads", count) do |i|
42
- # cache.get(random_keys[i])
43
- # end
44
-
45
- bench("Redis reads", count) do |i|
46
- redis.get(random_keys[i])
47
- end
48
- puts "=========================================================="
49
-
50
- values = []
51
- end
52
-
53
-
54
- cache.set("somekey", 1)
55
- #mem.set("somekey", 1)
56
- redis.set("somekey", 1)
57
-
58
- bench("Ultralite cache increment") do
59
- cache.increment("somekey", 1)
60
- end
61
-
62
- #bench("Ultralite memory cache increment") do
63
- # mem.increment("somekey", 1)
64
- #end
65
-
66
- bench("Redis increment") do
67
- redis.incr("somekey")
68
- end
69
-
70
- cache.clear
71
- redis.flushdb
72
-
@@ -1,49 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../../ultralite/job.rb'
4
- require "active_support/core_ext/enumerable"
5
- require "active_support/core_ext/array/access"
6
- require "active_job"
7
-
8
- module ActiveJob
9
- module QueueAdapters
10
- # == Ultralite adapter for Active Job
11
- #
12
- #
13
- # Rails.application.config.active_job.queue_adapter = :ultralite
14
- class UltraliteAdapter
15
-
16
- DEFAULT_OPTIONS = {
17
- config_path: "./config/ultrajob.yml",
18
- path: "../db/queue.db",
19
- queues: [["default", 1, "spawn"]],
20
- workers: 1
21
- }
22
-
23
- DEFAULT_CONFIG_PATH = "./config/ultrajob.yml"
24
-
25
- def initialize(options={})
26
- Job.options = DEFAULT_OPTIONS.merge(options)
27
- end
28
-
29
- def enqueue(job) # :nodoc:
30
- Job.queue = job.queue_name
31
- Job.perform_async(job.serialize)
32
- end
33
-
34
- def enqueue_at(job, timestamp) # :nodoc:
35
- Job.queue = job.queue_name
36
- Job.perform_at(timestamp, job.serialize)
37
- end
38
-
39
- class Job # :nodoc:
40
-
41
- include ::Ultralite::Job
42
-
43
- def perform(job_data)
44
- Base.execute job_data
45
- end
46
- end
47
- end
48
- end
49
- end