litestack 0.1.7 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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