lex-memcached 0.2.0 → 0.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ef636e82ef50dc51d08210bcd0039b93e3891cbe1ff445474900cd4fc38c36fc
4
- data.tar.gz: '0918bc87ee94c952edb2620f53d333ca3e8cc715c4dbde23038a5796d6bc8e19'
3
+ metadata.gz: f0a73cc5cc1e522b2c353b0c7f6bf0c156b90e958928679f25ad5bdd9c8d3dbb
4
+ data.tar.gz: f79da65822ed7fa3f0c0a9ce619e9fdf6badb2f5370162e8c0eafe22706360b1
5
5
  SHA512:
6
- metadata.gz: 2dd0aa8a44413bb8c83ffa56cc585e01427a438550f295fb08a3896b6c3903815705fba5e460880ffe075e52bf83604cbfd53a0ee00686066c4b9fa9ae1079e9
7
- data.tar.gz: 5b9a55c1bcd10ece8bfa15b6abda60faeed6c6c4d19ad74889b5874a7141d8fab4d5eb2ff73943e4da64ffb471cee70a72f4b2f2cfccf8ebda68d36fed584c97
6
+ metadata.gz: 9516af62edade27423280945e2869ef19d33732f8e59433b3c5b825f46872e4ea4b6bfc890032bc007cb8d5efcf5d9606cf764ddc52f2ac0029623c9a8c67a1f
7
+ data.tar.gz: f6f51795c80dca11c70f3a402d39bba3b7ae89ef171ca3c73bc1737a55dc5f17c8a2e5b6c06f30176e899f74eb15cb8a72b246d4d8e05afecbd5ca871c27af0c
data/.gitignore CHANGED
@@ -9,3 +9,5 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+
13
+ Gemfile.lock
data/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.2.2] - 2026-03-22
4
+
5
+ ### Changed
6
+ - Add legion-cache, legion-crypt, legion-data, legion-json, legion-logging, legion-settings, and legion-transport as runtime dependencies
7
+ - Update spec_helper with real sub-gem helper stubs
8
+
9
+ ## [0.2.1] - 2026-03-18
10
+
11
+ ### Fixed
12
+ - `runners/item.rb`: named anonymous `**` splat as `**opts` in `get`, `fetch`, `add`, `delete`, and `append` methods to fix `NameError` at runtime
13
+ - `runners/server.rb`: `flush` now uses `client(server: server, **opts)` helper instead of bypassing it with `Dalli::Client.new` directly
14
+ - Added `if defined?(Legion::Extensions::Helpers::Lex)` guard to both runner files for standalone loading
15
+
16
+ ### Added
17
+ - `spec.license = 'MIT'` in gemspec
18
+ - `Gemfile.lock` added to `.gitignore`
19
+ - Uncommented and fully implemented specs for `Runners::Item`, `Runners::Server`, and `Helpers::Client`
20
+ - Entry point `memcached.rb` now requires helpers and runners explicitly
21
+
3
22
  ## [0.2.0] - 2026-03-15
4
23
 
5
24
  ### Added
data/CLAUDE.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  Legion Extension that connects LegionIO to Memcached servers. Provides runners for item-level cache operations and server management through the Dalli client. Also includes a standalone `Client` class for use outside the Legion runtime.
10
10
 
11
- **Version**: 0.2.0
11
+ **Version**: 0.2.1
12
12
 
13
13
  **GitHub**: https://github.com/LegionIO/lex-memcached
14
14
  **License**: MIT
@@ -68,7 +68,7 @@ mc.set(key: 'foo', value: 'bar', server: '10.0.0.1:11211', ttl: 300)
68
68
  mc.get(key: 'foo', server: '10.0.0.1:11211')
69
69
  ```
70
70
 
71
- Per-call connection options can be overridden; the `client` method merges instance opts with any call-level overrides before building the `Dalli::Client`.
71
+ The `client` method on the standalone Client builds a `Dalli::Client` directly, merging instance opts with per-call overrides.
72
72
 
73
73
  ## Dependencies
74
74
 
@@ -78,6 +78,8 @@ Per-call connection options can be overridden; the `client` method merges instan
78
78
 
79
79
  ## Development
80
80
 
81
+ 42 specs total.
82
+
81
83
  ```bash
82
84
  bundle install
83
85
  bundle exec rspec
data/README.md CHANGED
@@ -14,6 +14,19 @@ Or add to your Gemfile:
14
14
  gem 'lex-memcached'
15
15
  ```
16
16
 
17
+ ## Standalone Usage
18
+
19
+ ```ruby
20
+ require 'legion/extensions/memcached'
21
+
22
+ client = Legion::Extensions::Memcached::Client.new(server: '10.0.0.1:11211')
23
+ client.set(key: 'foo', value: 'bar', server: '10.0.0.1:11211', ttl: 300)
24
+ client.get(key: 'foo', server: '10.0.0.1:11211')
25
+ client.stats(server: '10.0.0.1:11211')
26
+ ```
27
+
28
+ Constructor accepts `server:` (default `'127.0.0.1:11211'`).
29
+
17
30
  ## Runners
18
31
 
19
32
  | Runner | Methods |
@@ -35,8 +48,8 @@ gem 'lex-memcached'
35
48
  ## Requirements
36
49
 
37
50
  - Ruby >= 3.4
38
- - [LegionIO](https://github.com/LegionIO/LegionIO) framework
39
51
  - Memcached server
52
+ - [LegionIO](https://github.com/LegionIO/LegionIO) framework (optional — standalone Client works without it)
40
53
 
41
54
  ## License
42
55
 
@@ -13,6 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.summary = 'LEX::Memcached'
14
14
  spec.description = 'LegionIO Extensions to connect to and manage memcached servers'
15
15
  spec.homepage = 'https://github.com/LegionIO/lex-memcached'
16
+ spec.license = 'MIT'
16
17
  spec.required_ruby_version = '>= 3.4'
17
18
 
18
19
  spec.metadata['homepage_uri'] = spec.homepage
@@ -29,4 +30,11 @@ Gem::Specification.new do |spec|
29
30
  spec.require_paths = ['lib']
30
31
 
31
32
  spec.add_dependency 'dalli', '>= 3.0'
33
+ spec.add_dependency 'legion-cache', '>= 1.3.11'
34
+ spec.add_dependency 'legion-crypt', '>= 1.4.9'
35
+ spec.add_dependency 'legion-data', '>= 1.4.17'
36
+ spec.add_dependency 'legion-json', '>= 1.2.1'
37
+ spec.add_dependency 'legion-logging', '>= 1.3.2'
38
+ spec.add_dependency 'legion-settings', '>= 1.3.14'
39
+ spec.add_dependency 'legion-transport', '>= 1.3.9'
32
40
  end
@@ -13,26 +13,26 @@ module Legion
13
13
  end
14
14
 
15
15
  def get(key:, server: nil, **)
16
- { success: true, get: client(server: server, **).get(key), **opts }
16
+ { success: true, get: client(server: server, **).get(key) }
17
17
  end
18
18
 
19
19
  def fetch(key:, server: nil, **)
20
- { success: true, fetch: client(server: server, **).fetch(key), **opts }
20
+ { success: true, fetch: client(server: server, **).fetch(key) }
21
21
  end
22
22
 
23
23
  def add(key:, value:, ttl:, server: nil, **)
24
- { success: true, add: client(server: server, **).add(key, value, ttl), **opts }
24
+ { success: true, add: client(server: server, **).add(key, value, ttl) }
25
25
  end
26
26
 
27
27
  def delete(key:, server: nil, **)
28
- { success: true, delete: client(server: server, **).delete(key), **opts }
28
+ { success: true, delete: client(server: server, **).delete(key) }
29
29
  end
30
30
 
31
31
  def append(key:, value:, server: nil, **)
32
- { success: true, append: client(server: server, **).append(key, value), **opts }
32
+ { success: true, append: client(server: server, **).append(key, value) }
33
33
  end
34
34
 
35
- include Legion::Extensions::Helpers::Lex
35
+ include Legion::Extensions::Helpers::Lex if defined?(Legion::Extensions::Helpers::Lex)
36
36
  end
37
37
  end
38
38
  end
@@ -8,26 +8,26 @@ module Legion
8
8
  include Legion::Extensions::Memcached::Helpers::Client
9
9
 
10
10
  def alive(server: nil, **)
11
- { success: true, result: client(server: server, **).alive?, **opts }
11
+ { success: true, result: client(server: server, **).alive? }
12
12
  end
13
13
 
14
- def flush(delay: 0, server: nil, **opts)
15
- { success: true, result: Dalli::Client.new(server).flush(delay), **opts }
14
+ def flush(server: nil, delay: 0, **)
15
+ { success: true, result: client(server: server, **).flush(delay) }
16
16
  end
17
17
 
18
18
  def stats(delay: 0, server: nil, **)
19
- { success: true, result: client(server: server, **).stats(delay), **opts }
19
+ { success: true, result: client(server: server, **).stats(delay) }
20
20
  end
21
21
 
22
22
  def reset_stats(server: nil, **)
23
- { success: true, result: client(server: server, **).reset_stats, **opts }
23
+ { success: true, result: client(server: server, **).reset_stats }
24
24
  end
25
25
 
26
26
  def version(server: nil, **)
27
- { success: true, result: client(server: server, **).version, **opts }
27
+ { success: true, result: client(server: server, **).version }
28
28
  end
29
29
 
30
- include Legion::Extensions::Helpers::Lex
30
+ include Legion::Extensions::Helpers::Lex if defined?(Legion::Extensions::Helpers::Lex)
31
31
  end
32
32
  end
33
33
  end
@@ -3,7 +3,7 @@
3
3
  module Legion
4
4
  module Extensions
5
5
  module Memcached
6
- VERSION = '0.2.0'
6
+ VERSION = '0.2.2'
7
7
  end
8
8
  end
9
9
  end
@@ -1,6 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'legion/extensions/memcached/version'
4
+ require 'legion/extensions/memcached/helpers/client'
5
+ require 'legion/extensions/memcached/runners/item'
6
+ require 'legion/extensions/memcached/runners/server'
4
7
  require 'legion/extensions/memcached/client'
5
8
 
6
9
  module Legion
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lex-memcached
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
@@ -23,6 +23,104 @@ dependencies:
23
23
  - - ">="
24
24
  - !ruby/object:Gem::Version
25
25
  version: '3.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: legion-cache
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.3.11
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 1.3.11
40
+ - !ruby/object:Gem::Dependency
41
+ name: legion-crypt
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.4.9
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 1.4.9
54
+ - !ruby/object:Gem::Dependency
55
+ name: legion-data
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 1.4.17
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 1.4.17
68
+ - !ruby/object:Gem::Dependency
69
+ name: legion-json
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.2.1
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 1.2.1
82
+ - !ruby/object:Gem::Dependency
83
+ name: legion-logging
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 1.3.2
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 1.3.2
96
+ - !ruby/object:Gem::Dependency
97
+ name: legion-settings
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 1.3.14
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 1.3.14
110
+ - !ruby/object:Gem::Dependency
111
+ name: legion-transport
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 1.3.9
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 1.3.9
26
124
  description: LegionIO Extensions to connect to and manage memcached servers
27
125
  email:
28
126
  - matthewdiverson@gmail.com
@@ -38,7 +136,6 @@ files:
38
136
  - CLAUDE.md
39
137
  - Dockerfile
40
138
  - Gemfile
41
- - Gemfile.lock
42
139
  - README.md
43
140
  - docker_deploy.rb
44
141
  - lex-memcached.gemspec
@@ -49,7 +146,8 @@ files:
49
146
  - lib/legion/extensions/memcached/runners/server.rb
50
147
  - lib/legion/extensions/memcached/version.rb
51
148
  homepage: https://github.com/LegionIO/lex-memcached
52
- licenses: []
149
+ licenses:
150
+ - MIT
53
151
  metadata:
54
152
  homepage_uri: https://github.com/LegionIO/lex-memcached
55
153
  source_code_uri: https://github.com/LegionIO/lex-memcached
data/Gemfile.lock DELETED
@@ -1,160 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- lex-memcached (0.2.0)
5
- dalli (>= 3.0)
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- addressable (2.8.9)
11
- public_suffix (>= 2.0.2, < 8.0)
12
- amq-protocol (2.5.1)
13
- ast (2.4.3)
14
- aws-eventstream (1.4.0)
15
- aws-sigv4 (1.12.1)
16
- aws-eventstream (~> 1, >= 1.0.2)
17
- base64 (0.3.0)
18
- bigdecimal (4.0.1)
19
- bunny (2.24.0)
20
- amq-protocol (~> 2.3)
21
- sorted_set (~> 1, >= 1.0.2)
22
- concurrent-ruby (1.3.6)
23
- concurrent-ruby-ext (1.3.6)
24
- concurrent-ruby (= 1.3.6)
25
- connection_pool (2.5.5)
26
- daemons (1.4.1)
27
- dalli (5.0.2)
28
- logger
29
- diff-lcs (1.6.2)
30
- docile (1.4.1)
31
- json (2.19.1)
32
- json-schema (6.2.0)
33
- addressable (~> 2.8)
34
- bigdecimal (>= 3.1, < 5)
35
- json_pure (2.8.1)
36
- language_server-protocol (3.17.0.5)
37
- legion-cache (1.2.0)
38
- connection_pool (>= 2.2.3)
39
- dalli (>= 2.7)
40
- legion-logging
41
- legion-settings
42
- redis (>= 4.2)
43
- legion-crypt (1.2.0)
44
- vault (>= 0.15.0)
45
- legion-json (1.2.0)
46
- json_pure
47
- multi_json
48
- legion-logging (1.2.0)
49
- rainbow (~> 3)
50
- legion-settings (1.2.0)
51
- legion-json (>= 1.2)
52
- legion-transport (1.2.0)
53
- bunny (>= 2.17.0)
54
- concurrent-ruby (>= 1.1.7)
55
- legion-json
56
- legion-settings
57
- legionio (1.2.1)
58
- concurrent-ruby (>= 1.1.7)
59
- concurrent-ruby-ext (>= 1.1.7)
60
- daemons (>= 1.3.1)
61
- legion-cache (>= 0.2.0)
62
- legion-crypt (>= 0.2.0)
63
- legion-json (>= 0.2.0)
64
- legion-logging (>= 0.2.0)
65
- legion-settings (>= 0.2.0)
66
- legion-transport (>= 1.1.9)
67
- lex-node
68
- oj (>= 3.10)
69
- thor (>= 1)
70
- lex-node (0.2.0)
71
- lint_roller (1.1.0)
72
- logger (1.7.0)
73
- mcp (0.8.0)
74
- json-schema (>= 4.1)
75
- multi_json (1.19.1)
76
- net-http-persistent (4.0.8)
77
- connection_pool (>= 2.2.4, < 4)
78
- oj (3.16.16)
79
- bigdecimal (>= 3.0)
80
- ostruct (>= 0.2)
81
- ostruct (0.6.3)
82
- parallel (1.27.0)
83
- parser (3.3.10.2)
84
- ast (~> 2.4.1)
85
- racc
86
- prism (1.9.0)
87
- public_suffix (7.0.5)
88
- racc (1.8.1)
89
- rainbow (3.1.1)
90
- rake (13.3.1)
91
- rbtree (0.4.6)
92
- redis (5.4.1)
93
- redis-client (>= 0.22.0)
94
- redis-client (0.27.0)
95
- connection_pool
96
- regexp_parser (2.11.3)
97
- rspec (3.13.2)
98
- rspec-core (~> 3.13.0)
99
- rspec-expectations (~> 3.13.0)
100
- rspec-mocks (~> 3.13.0)
101
- rspec-core (3.13.6)
102
- rspec-support (~> 3.13.0)
103
- rspec-expectations (3.13.5)
104
- diff-lcs (>= 1.2.0, < 2.0)
105
- rspec-support (~> 3.13.0)
106
- rspec-mocks (3.13.8)
107
- diff-lcs (>= 1.2.0, < 2.0)
108
- rspec-support (~> 3.13.0)
109
- rspec-support (3.13.7)
110
- rspec_junit_formatter (0.6.0)
111
- rspec-core (>= 2, < 4, != 2.12.0)
112
- rubocop (1.85.1)
113
- json (~> 2.3)
114
- language_server-protocol (~> 3.17.0.2)
115
- lint_roller (~> 1.1.0)
116
- mcp (~> 0.6)
117
- parallel (~> 1.10)
118
- parser (>= 3.3.0.2)
119
- rainbow (>= 2.2.2, < 4.0)
120
- regexp_parser (>= 2.9.3, < 3.0)
121
- rubocop-ast (>= 1.49.0, < 2.0)
122
- ruby-progressbar (~> 1.7)
123
- unicode-display_width (>= 2.4.0, < 4.0)
124
- rubocop-ast (1.49.1)
125
- parser (>= 3.3.7.2)
126
- prism (~> 1.7)
127
- ruby-progressbar (1.13.0)
128
- simplecov (0.22.0)
129
- docile (~> 1.1)
130
- simplecov-html (~> 0.11)
131
- simplecov_json_formatter (~> 0.1)
132
- simplecov-html (0.13.2)
133
- simplecov_json_formatter (0.1.4)
134
- sorted_set (1.1.0)
135
- rbtree
136
- thor (1.5.0)
137
- unicode-display_width (3.2.0)
138
- unicode-emoji (~> 4.1)
139
- unicode-emoji (4.2.0)
140
- vault (0.20.0)
141
- aws-sigv4
142
- base64
143
- connection_pool (~> 2.4)
144
- net-http-persistent (~> 4.0, >= 4.0.2)
145
-
146
- PLATFORMS
147
- arm64-darwin-25
148
- ruby
149
-
150
- DEPENDENCIES
151
- legionio
152
- lex-memcached!
153
- rake
154
- rspec
155
- rspec_junit_formatter
156
- rubocop
157
- simplecov
158
-
159
- BUNDLED WITH
160
- 2.6.9