lex-memcached 0.1.2 → 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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +16 -0
- data/.rubocop.yml +40 -9
- data/CHANGELOG.md +13 -1
- data/CLAUDE.md +89 -0
- data/Dockerfile +5 -0
- data/Gemfile +12 -2
- data/Gemfile.lock +121 -94
- data/README.md +28 -20
- data/docker_deploy.rb +19 -0
- data/lex-memcached.gemspec +12 -17
- data/lib/legion/extensions/memcached/client.rb +28 -0
- data/lib/legion/extensions/memcached/helpers/client.rb +4 -2
- data/lib/legion/extensions/memcached/runners/item.rb +31 -25
- data/lib/legion/extensions/memcached/runners/server.rb +26 -20
- data/lib/legion/extensions/memcached/version.rb +3 -1
- data/lib/legion/extensions/memcached.rb +3 -0
- metadata +20 -121
- data/.circleci/config.yml +0 -61
- data/Rakefile +0 -6
- data/bin/console +0 -14
- data/bin/lex-memcached +0 -58
- data/bin/setup +0 -8
- data/bitbucket-pipelines.yml +0 -17
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ef636e82ef50dc51d08210bcd0039b93e3891cbe1ff445474900cd4fc38c36fc
|
|
4
|
+
data.tar.gz: '0918bc87ee94c952edb2620f53d333ca3e8cc715c4dbde23038a5796d6bc8e19'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2dd0aa8a44413bb8c83ffa56cc585e01427a438550f295fb08a3896b6c3903815705fba5e460880ffe075e52bf83604cbfd53a0ee00686066c4b9fa9ae1079e9
|
|
7
|
+
data.tar.gz: 5b9a55c1bcd10ece8bfa15b6abda60faeed6c6c4d19ad74889b5874a7141d8fab4d5eb2ff73943e4da64ffb471cee70a72f4b2f2cfccf8ebda68d36fed584c97
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches: [main]
|
|
5
|
+
pull_request:
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
ci:
|
|
9
|
+
uses: LegionIO/.github/.github/workflows/ci.yml@main
|
|
10
|
+
|
|
11
|
+
release:
|
|
12
|
+
needs: ci
|
|
13
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
14
|
+
uses: LegionIO/.github/.github/workflows/release.yml@main
|
|
15
|
+
secrets:
|
|
16
|
+
rubygems-api-key: ${{ secrets.RUBYGEMS_API_KEY }}
|
data/.rubocop.yml
CHANGED
|
@@ -1,19 +1,50 @@
|
|
|
1
|
+
AllCops:
|
|
2
|
+
TargetRubyVersion: 3.4
|
|
3
|
+
NewCops: enable
|
|
4
|
+
SuggestExtensions: false
|
|
5
|
+
|
|
1
6
|
Layout/LineLength:
|
|
2
|
-
Max:
|
|
7
|
+
Max: 160
|
|
8
|
+
|
|
9
|
+
Layout/SpaceAroundEqualsInParameterDefault:
|
|
10
|
+
EnforcedStyle: space
|
|
11
|
+
|
|
12
|
+
Layout/HashAlignment:
|
|
13
|
+
EnforcedHashRocketStyle: table
|
|
14
|
+
EnforcedColonStyle: table
|
|
15
|
+
|
|
3
16
|
Metrics/MethodLength:
|
|
4
|
-
Max:
|
|
17
|
+
Max: 50
|
|
18
|
+
|
|
5
19
|
Metrics/ClassLength:
|
|
6
20
|
Max: 1500
|
|
21
|
+
|
|
22
|
+
Metrics/ModuleLength:
|
|
23
|
+
Max: 1500
|
|
24
|
+
|
|
7
25
|
Metrics/BlockLength:
|
|
8
|
-
Max:
|
|
26
|
+
Max: 40
|
|
27
|
+
Exclude:
|
|
28
|
+
- 'spec/**/*'
|
|
29
|
+
|
|
30
|
+
Metrics/AbcSize:
|
|
31
|
+
Max: 60
|
|
32
|
+
|
|
33
|
+
Metrics/CyclomaticComplexity:
|
|
34
|
+
Max: 15
|
|
35
|
+
|
|
36
|
+
Metrics/PerceivedComplexity:
|
|
37
|
+
Max: 17
|
|
38
|
+
|
|
9
39
|
Style/Documentation:
|
|
10
40
|
Enabled: false
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
41
|
+
|
|
42
|
+
Style/SymbolArray:
|
|
43
|
+
Enabled: true
|
|
44
|
+
|
|
14
45
|
Style/FrozenStringLiteralComment:
|
|
15
|
-
Enabled:
|
|
46
|
+
Enabled: true
|
|
47
|
+
EnforcedStyle: always
|
|
48
|
+
|
|
16
49
|
Naming/FileName:
|
|
17
50
|
Enabled: false
|
|
18
|
-
Style/ClassAndModuleChildren:
|
|
19
|
-
Enabled: false
|
data/CHANGELOG.md
CHANGED
|
@@ -1 +1,13 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.2.0] - 2026-03-15
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- Standalone `Client` class (`Legion::Extensions::Memcached::Client`) that includes all Runner modules (`Item`, `Server`), stores connection options, and provides a `client(**override)` method for creating `Dalli::Client` instances outside the full LegionIO framework
|
|
7
|
+
- Specs for the standalone `Client` class
|
|
8
|
+
|
|
9
|
+
## [0.1.3] - prior
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- Initial implementation with `Item` and `Server` runners
|
|
13
|
+
- `Helpers::Client` wrapping `Dalli::Client`
|
data/CLAUDE.md
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# lex-memcached: Memcached Integration for LegionIO
|
|
2
|
+
|
|
3
|
+
**Repository Level 3 Documentation**
|
|
4
|
+
- **Parent**: `/Users/miverso2/rubymine/legion/extensions-other/CLAUDE.md`
|
|
5
|
+
- **Grandparent**: `/Users/miverso2/rubymine/legion/CLAUDE.md`
|
|
6
|
+
|
|
7
|
+
## Purpose
|
|
8
|
+
|
|
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
|
+
|
|
11
|
+
**Version**: 0.2.0
|
|
12
|
+
|
|
13
|
+
**GitHub**: https://github.com/LegionIO/lex-memcached
|
|
14
|
+
**License**: MIT
|
|
15
|
+
|
|
16
|
+
## Architecture
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
Legion::Extensions::Memcached
|
|
20
|
+
├── Client # Standalone client: includes all runners, manages Dalli connection
|
|
21
|
+
│ ├── (includes) Runners::Item
|
|
22
|
+
│ └── (includes) Runners::Server
|
|
23
|
+
├── Runners/
|
|
24
|
+
│ ├── Item # Cache item ops: set, get, fetch, add, delete, append
|
|
25
|
+
│ └── Server # Server management and stats
|
|
26
|
+
└── Helpers/
|
|
27
|
+
└── Client # Dalli client connection helper
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Key Files
|
|
31
|
+
|
|
32
|
+
| Path | Purpose |
|
|
33
|
+
|------|---------|
|
|
34
|
+
| `lib/legion/extensions/memcached.rb` | Entry point, extension registration |
|
|
35
|
+
| `lib/legion/extensions/memcached/client.rb` | Standalone client class: includes all runners, wraps Dalli connection |
|
|
36
|
+
| `lib/legion/extensions/memcached/runners/item.rb` | Item runner: set, get, fetch, add, delete, append |
|
|
37
|
+
| `lib/legion/extensions/memcached/runners/server.rb` | Server stats and management |
|
|
38
|
+
| `lib/legion/extensions/memcached/helpers/client.rb` | Dalli client factory |
|
|
39
|
+
|
|
40
|
+
## Runner: Item
|
|
41
|
+
|
|
42
|
+
| Method | Parameters |
|
|
43
|
+
|--------|-----------|
|
|
44
|
+
| `set` | `key:`, `value:`, `server:`, `ttl:` |
|
|
45
|
+
| `get` | `key:`, `server:` |
|
|
46
|
+
| `fetch` | `key:`, `server:` |
|
|
47
|
+
| `add` | `key:`, `value:`, `ttl:`, `server:` |
|
|
48
|
+
| `delete` | `key:`, `server:` |
|
|
49
|
+
| `append` | `key:`, `value:`, `server:` |
|
|
50
|
+
|
|
51
|
+
## Runner: Server
|
|
52
|
+
|
|
53
|
+
| Method | Parameters |
|
|
54
|
+
|--------|-----------|
|
|
55
|
+
| `alive` | `server:` |
|
|
56
|
+
| `flush` | `delay:` (default: 0), `server:` |
|
|
57
|
+
| `stats` | `delay:` (default: 0), `server:` |
|
|
58
|
+
| `reset_stats` | `server:` |
|
|
59
|
+
| `version` | `server:` |
|
|
60
|
+
|
|
61
|
+
## Standalone Usage
|
|
62
|
+
|
|
63
|
+
`Legion::Extensions::Memcached::Client` can be used independently of the Legion runtime. It accepts a `server:` kwarg (default: `'127.0.0.1:11211'`) and includes all Item and Server runner methods directly.
|
|
64
|
+
|
|
65
|
+
```ruby
|
|
66
|
+
mc = Legion::Extensions::Memcached::Client.new(server: '10.0.0.1:11211')
|
|
67
|
+
mc.set(key: 'foo', value: 'bar', server: '10.0.0.1:11211', ttl: 300)
|
|
68
|
+
mc.get(key: 'foo', server: '10.0.0.1:11211')
|
|
69
|
+
```
|
|
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`.
|
|
72
|
+
|
|
73
|
+
## Dependencies
|
|
74
|
+
|
|
75
|
+
| Gem | Purpose |
|
|
76
|
+
|-----|---------|
|
|
77
|
+
| `dalli` (>= 3.0) | Memcached Ruby client |
|
|
78
|
+
|
|
79
|
+
## Development
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
bundle install
|
|
83
|
+
bundle exec rspec
|
|
84
|
+
bundle exec rubocop
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
**Maintained By**: Matthew Iverson (@Esity)
|
data/Dockerfile
ADDED
data/Gemfile
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
source 'https://rubygems.org'
|
|
4
4
|
gemspec
|
|
5
|
+
|
|
6
|
+
gem 'legionio'
|
|
7
|
+
|
|
8
|
+
group :test do
|
|
9
|
+
gem 'rake'
|
|
10
|
+
gem 'rspec'
|
|
11
|
+
gem 'rspec_junit_formatter'
|
|
12
|
+
gem 'rubocop'
|
|
13
|
+
gem 'simplecov'
|
|
14
|
+
end
|
data/Gemfile.lock
CHANGED
|
@@ -1,133 +1,160 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
lex-memcached (0.
|
|
5
|
-
dalli
|
|
4
|
+
lex-memcached (0.2.0)
|
|
5
|
+
dalli (>= 3.0)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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)
|
|
14
16
|
aws-eventstream (~> 1, >= 1.0.2)
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
concurrent-ruby (1.
|
|
21
|
-
concurrent-ruby-ext (1.
|
|
22
|
-
concurrent-ruby (= 1.
|
|
23
|
-
connection_pool (2.
|
|
24
|
-
daemons (1.
|
|
25
|
-
dalli (
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
json (2.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
legion-
|
|
36
|
-
|
|
37
|
-
|
|
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)
|
|
38
40
|
legion-logging
|
|
39
41
|
legion-settings
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
legion-json (1.
|
|
42
|
+
redis (>= 4.2)
|
|
43
|
+
legion-crypt (1.2.0)
|
|
44
|
+
vault (>= 0.15.0)
|
|
45
|
+
legion-json (1.2.0)
|
|
44
46
|
json_pure
|
|
45
47
|
multi_json
|
|
46
|
-
legion-logging (1.
|
|
48
|
+
legion-logging (1.2.0)
|
|
47
49
|
rainbow (~> 3)
|
|
48
|
-
legion-settings (1.
|
|
49
|
-
legion-json
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
concurrent-ruby
|
|
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)
|
|
54
55
|
legion-json
|
|
55
|
-
legionio (0.3.4)
|
|
56
|
-
bunny
|
|
57
|
-
concurrent-ruby
|
|
58
|
-
concurrent-ruby-ext
|
|
59
|
-
daemons
|
|
60
|
-
hashdiff
|
|
61
|
-
legion-cache
|
|
62
|
-
legion-crypt
|
|
63
|
-
legion-data
|
|
64
|
-
legion-exceptions
|
|
65
|
-
legion-json
|
|
66
|
-
legion-logging
|
|
67
56
|
legion-settings
|
|
68
|
-
|
|
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)
|
|
69
67
|
lex-node
|
|
70
|
-
oj
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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)
|
|
77
84
|
ast (~> 2.4.1)
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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)
|
|
90
104
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
91
|
-
rspec-support (~> 3.
|
|
92
|
-
rspec-mocks (3.
|
|
105
|
+
rspec-support (~> 3.13.0)
|
|
106
|
+
rspec-mocks (3.13.8)
|
|
93
107
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
94
|
-
rspec-support (~> 3.
|
|
95
|
-
rspec-support (3.
|
|
96
|
-
rspec_junit_formatter (0.
|
|
108
|
+
rspec-support (~> 3.13.0)
|
|
109
|
+
rspec-support (3.13.7)
|
|
110
|
+
rspec_junit_formatter (0.6.0)
|
|
97
111
|
rspec-core (>= 2, < 4, != 2.12.0)
|
|
98
|
-
rubocop (1.
|
|
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)
|
|
99
117
|
parallel (~> 1.10)
|
|
100
|
-
parser (>=
|
|
118
|
+
parser (>= 3.3.0.2)
|
|
101
119
|
rainbow (>= 2.2.2, < 4.0)
|
|
102
|
-
regexp_parser (>=
|
|
103
|
-
|
|
104
|
-
rubocop-ast (>= 0.6.0)
|
|
120
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
|
121
|
+
rubocop-ast (>= 1.49.0, < 2.0)
|
|
105
122
|
ruby-progressbar (~> 1.7)
|
|
106
|
-
unicode-display_width (>=
|
|
107
|
-
rubocop-ast (1.
|
|
108
|
-
parser (>=
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
simplecov (0.
|
|
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)
|
|
112
129
|
docile (~> 1.1)
|
|
113
130
|
simplecov-html (~> 0.11)
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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)
|
|
117
141
|
aws-sigv4
|
|
142
|
+
base64
|
|
143
|
+
connection_pool (~> 2.4)
|
|
144
|
+
net-http-persistent (~> 4.0, >= 4.0.2)
|
|
118
145
|
|
|
119
146
|
PLATFORMS
|
|
147
|
+
arm64-darwin-25
|
|
120
148
|
ruby
|
|
121
149
|
|
|
122
150
|
DEPENDENCIES
|
|
123
|
-
bundler
|
|
124
|
-
codecov
|
|
125
151
|
legionio
|
|
126
152
|
lex-memcached!
|
|
127
153
|
rake
|
|
128
154
|
rspec
|
|
129
155
|
rspec_junit_formatter
|
|
130
156
|
rubocop
|
|
157
|
+
simplecov
|
|
131
158
|
|
|
132
159
|
BUNDLED WITH
|
|
133
|
-
2.
|
|
160
|
+
2.6.9
|
data/README.md
CHANGED
|
@@ -1,35 +1,43 @@
|
|
|
1
|
-
#
|
|
1
|
+
# lex-memcached
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
|
3
|
+
Memcached integration for [LegionIO](https://github.com/LegionIO/LegionIO). Run cache operations like get, set, add, append, and delete against Memcached servers via the Dalli client.
|
|
6
4
|
|
|
7
5
|
## Installation
|
|
8
6
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
```ruby
|
|
12
|
-
gem 'legion-extensions-memcached'
|
|
7
|
+
```bash
|
|
8
|
+
gem install lex-memcached
|
|
13
9
|
```
|
|
14
10
|
|
|
15
|
-
|
|
11
|
+
Or add to your Gemfile:
|
|
16
12
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
```ruby
|
|
14
|
+
gem 'lex-memcached'
|
|
15
|
+
```
|
|
20
16
|
|
|
21
|
-
|
|
17
|
+
## Runners
|
|
22
18
|
|
|
23
|
-
|
|
19
|
+
| Runner | Methods |
|
|
20
|
+
|--------|---------|
|
|
21
|
+
| Item | `set`, `get`, `fetch`, `add`, `delete`, `append` |
|
|
22
|
+
| Server | Server management and stats |
|
|
24
23
|
|
|
25
|
-
|
|
24
|
+
### Item Parameters
|
|
26
25
|
|
|
27
|
-
|
|
26
|
+
| Method | Required | Optional |
|
|
27
|
+
|--------|----------|----------|
|
|
28
|
+
| `set` | `key`, `value` | `server`, `ttl` |
|
|
29
|
+
| `get` | `key` | `server` |
|
|
30
|
+
| `fetch` | `key` | `server` |
|
|
31
|
+
| `add` | `key`, `value`, `ttl` | `server` |
|
|
32
|
+
| `delete` | `key` | `server` |
|
|
33
|
+
| `append` | `key`, `value` | `server` |
|
|
28
34
|
|
|
29
|
-
|
|
35
|
+
## Requirements
|
|
30
36
|
|
|
31
|
-
|
|
37
|
+
- Ruby >= 3.4
|
|
38
|
+
- [LegionIO](https://github.com/LegionIO/LegionIO) framework
|
|
39
|
+
- Memcached server
|
|
32
40
|
|
|
33
|
-
##
|
|
41
|
+
## License
|
|
34
42
|
|
|
35
|
-
|
|
43
|
+
MIT
|
data/docker_deploy.rb
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
long_name = 'lex-memcached'
|
|
5
|
+
name = 'memcached'
|
|
6
|
+
require "./lib/legion/extensions/#{name}/version"
|
|
7
|
+
version = Legion::Extensions::Memcached::VERSION
|
|
8
|
+
|
|
9
|
+
system("gem build #{long_name}.gemspec")
|
|
10
|
+
system("gh release create v#{version} '#{long_name}-#{version}.gem'")
|
|
11
|
+
system("gem push #{long_name}-#{version}.gem")
|
|
12
|
+
system("gem push --key github --host https://rubygems.pkg.github.com/LegionIO #{long_name}-#{version}.gem")
|
|
13
|
+
|
|
14
|
+
puts "Building docker image for Legion v#{version}"
|
|
15
|
+
system("docker build --tag legionio/lex-#{name}:v#{version} .")
|
|
16
|
+
puts 'Pushing to hub.docker.com'
|
|
17
|
+
system("docker push legionio/lex-#{name}:v#{version}")
|
|
18
|
+
system("docker push legionio/lex-#{name}:latest")
|
|
19
|
+
puts 'completed'
|
data/lex-memcached.gemspec
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
lib = File.expand_path('lib', __dir__)
|
|
2
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
5
|
require 'legion/extensions/memcached/version'
|
|
@@ -5,19 +7,20 @@ require 'legion/extensions/memcached/version'
|
|
|
5
7
|
Gem::Specification.new do |spec|
|
|
6
8
|
spec.name = 'lex-memcached'
|
|
7
9
|
spec.version = Legion::Extensions::Memcached::VERSION
|
|
8
|
-
spec.authors = ['
|
|
10
|
+
spec.authors = ['Esity']
|
|
9
11
|
spec.email = ['matthewdiverson@gmail.com']
|
|
10
12
|
|
|
11
13
|
spec.summary = 'LEX::Memcached'
|
|
12
|
-
spec.description = '
|
|
13
|
-
spec.homepage = 'https://
|
|
14
|
-
spec.required_ruby_version =
|
|
14
|
+
spec.description = 'LegionIO Extensions to connect to and manage memcached servers'
|
|
15
|
+
spec.homepage = 'https://github.com/LegionIO/lex-memcached'
|
|
16
|
+
spec.required_ruby_version = '>= 3.4'
|
|
15
17
|
|
|
16
18
|
spec.metadata['homepage_uri'] = spec.homepage
|
|
17
|
-
spec.metadata['source_code_uri'] = 'https://
|
|
18
|
-
spec.metadata['documentation_uri'] = 'https://
|
|
19
|
-
spec.metadata['changelog_uri'] = 'https://
|
|
20
|
-
spec.metadata['bug_tracker_uri'] = 'https://
|
|
19
|
+
spec.metadata['source_code_uri'] = 'https://github.com/LegionIO/lex-memcached'
|
|
20
|
+
spec.metadata['documentation_uri'] = 'https://github.com/LegionIO/lex-memcached'
|
|
21
|
+
spec.metadata['changelog_uri'] = 'https://github.com/LegionIO/lex-memcached'
|
|
22
|
+
spec.metadata['bug_tracker_uri'] = 'https://github.com/LegionIO/lex-memcached/issues'
|
|
23
|
+
spec.metadata['rubygems_mfa_required'] = 'true'
|
|
21
24
|
|
|
22
25
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
|
23
26
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
@@ -25,13 +28,5 @@ Gem::Specification.new do |spec|
|
|
|
25
28
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
26
29
|
spec.require_paths = ['lib']
|
|
27
30
|
|
|
28
|
-
spec.
|
|
29
|
-
spec.add_development_dependency 'codecov'
|
|
30
|
-
spec.add_development_dependency 'legionio'
|
|
31
|
-
spec.add_development_dependency 'rake'
|
|
32
|
-
spec.add_development_dependency 'rspec'
|
|
33
|
-
spec.add_development_dependency 'rspec_junit_formatter'
|
|
34
|
-
spec.add_development_dependency 'rubocop'
|
|
35
|
-
|
|
36
|
-
spec.add_dependency 'dalli'
|
|
31
|
+
spec.add_dependency 'dalli', '>= 3.0'
|
|
37
32
|
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'helpers/client'
|
|
4
|
+
require_relative 'runners/item'
|
|
5
|
+
require_relative 'runners/server'
|
|
6
|
+
|
|
7
|
+
module Legion
|
|
8
|
+
module Extensions
|
|
9
|
+
module Memcached
|
|
10
|
+
class Client
|
|
11
|
+
include Runners::Item
|
|
12
|
+
include Runners::Server
|
|
13
|
+
|
|
14
|
+
attr_reader :opts
|
|
15
|
+
|
|
16
|
+
def initialize(server: '127.0.0.1:11211', **extra)
|
|
17
|
+
@opts = { server: server, **extra }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def client(**override)
|
|
21
|
+
merged = @opts.merge(override)
|
|
22
|
+
server = merged.fetch(:server)
|
|
23
|
+
Dalli::Client.new(server, **merged.except(:server))
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'dalli'
|
|
2
4
|
|
|
3
5
|
module Legion
|
|
@@ -5,8 +7,8 @@ module Legion
|
|
|
5
7
|
module Memcached
|
|
6
8
|
module Helpers
|
|
7
9
|
module Client
|
|
8
|
-
def client(server: '127.0.0.1:11211', **
|
|
9
|
-
Dalli::Client.new(server, **
|
|
10
|
+
def client(server: '127.0.0.1:11211', **)
|
|
11
|
+
Dalli::Client.new(server, **)
|
|
10
12
|
end
|
|
11
13
|
end
|
|
12
14
|
end
|
|
@@ -1,34 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
module Runners
|
|
3
|
-
module Item
|
|
4
|
-
include Legion::Extensions::Memcached::Helpers::Client
|
|
5
|
-
|
|
6
|
-
def set(key:, value:, server: nil, **opts)
|
|
7
|
-
client(server: server, **opts).set(key, value, opts[:ttl])
|
|
8
|
-
{ success: true, key: key, value: value, server: server, **opts }
|
|
9
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
10
2
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Memcached
|
|
6
|
+
module Runners
|
|
7
|
+
module Item
|
|
8
|
+
include Legion::Extensions::Memcached::Helpers::Client
|
|
14
9
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
10
|
+
def set(key:, value:, server: nil, **opts)
|
|
11
|
+
client(server: server, **opts).set(key, value, opts[:ttl])
|
|
12
|
+
{ success: true, key: key, value: value, server: server, **opts }
|
|
13
|
+
end
|
|
18
14
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
def get(key:, server: nil, **)
|
|
16
|
+
{ success: true, get: client(server: server, **).get(key), **opts }
|
|
17
|
+
end
|
|
22
18
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
19
|
+
def fetch(key:, server: nil, **)
|
|
20
|
+
{ success: true, fetch: client(server: server, **).fetch(key), **opts }
|
|
21
|
+
end
|
|
26
22
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
def add(key:, value:, ttl:, server: nil, **)
|
|
24
|
+
{ success: true, add: client(server: server, **).add(key, value, ttl), **opts }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def delete(key:, server: nil, **)
|
|
28
|
+
{ success: true, delete: client(server: server, **).delete(key), **opts }
|
|
29
|
+
end
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
def append(key:, value:, server: nil, **)
|
|
32
|
+
{ success: true, append: client(server: server, **).append(key, value), **opts }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
include Legion::Extensions::Helpers::Lex
|
|
36
|
+
end
|
|
37
|
+
end
|
|
32
38
|
end
|
|
33
39
|
end
|
|
34
40
|
end
|
|
@@ -1,29 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
module Runners
|
|
3
|
-
module Server
|
|
4
|
-
include Legion::Extensions::Memcached::Helpers::Client
|
|
1
|
+
# frozen_string_literal: true
|
|
5
2
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
module Legion
|
|
4
|
+
module Extensions
|
|
5
|
+
module Memcached
|
|
6
|
+
module Runners
|
|
7
|
+
module Server
|
|
8
|
+
include Legion::Extensions::Memcached::Helpers::Client
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
def alive(server: nil, **)
|
|
11
|
+
{ success: true, result: client(server: server, **).alive?, **opts }
|
|
12
|
+
end
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
def flush(delay: 0, server: nil, **opts)
|
|
15
|
+
{ success: true, result: Dalli::Client.new(server).flush(delay), **opts }
|
|
16
|
+
end
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
def stats(delay: 0, server: nil, **)
|
|
19
|
+
{ success: true, result: client(server: server, **).stats(delay), **opts }
|
|
20
|
+
end
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
def reset_stats(server: nil, **)
|
|
23
|
+
{ success: true, result: client(server: server, **).reset_stats, **opts }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def version(server: nil, **)
|
|
27
|
+
{ success: true, result: client(server: server, **).version, **opts }
|
|
28
|
+
end
|
|
25
29
|
|
|
26
|
-
|
|
30
|
+
include Legion::Extensions::Helpers::Lex
|
|
31
|
+
end
|
|
32
|
+
end
|
|
27
33
|
end
|
|
28
34
|
end
|
|
29
35
|
end
|
metadata
CHANGED
|
@@ -1,162 +1,62 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lex-memcached
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
-
|
|
8
|
-
autorequire:
|
|
7
|
+
- Esity
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: bundler
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - ">="
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '0'
|
|
20
|
-
type: :development
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - ">="
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '0'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: codecov
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - ">="
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - ">="
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: legionio
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: rake
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - ">="
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: rspec
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - ">="
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '0'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - ">="
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: rspec_junit_formatter
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - ">="
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: '0'
|
|
90
|
-
type: :development
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - ">="
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: '0'
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: rubocop
|
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
requirements:
|
|
101
|
-
- - ">="
|
|
102
|
-
- !ruby/object:Gem::Version
|
|
103
|
-
version: '0'
|
|
104
|
-
type: :development
|
|
105
|
-
prerelease: false
|
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
-
requirements:
|
|
108
|
-
- - ">="
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
version: '0'
|
|
111
12
|
- !ruby/object:Gem::Dependency
|
|
112
13
|
name: dalli
|
|
113
14
|
requirement: !ruby/object:Gem::Requirement
|
|
114
15
|
requirements:
|
|
115
16
|
- - ">="
|
|
116
17
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '0'
|
|
18
|
+
version: '3.0'
|
|
118
19
|
type: :runtime
|
|
119
20
|
prerelease: false
|
|
120
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
22
|
requirements:
|
|
122
23
|
- - ">="
|
|
123
24
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: '0'
|
|
125
|
-
description:
|
|
25
|
+
version: '3.0'
|
|
26
|
+
description: LegionIO Extensions to connect to and manage memcached servers
|
|
126
27
|
email:
|
|
127
28
|
- matthewdiverson@gmail.com
|
|
128
29
|
executables: []
|
|
129
30
|
extensions: []
|
|
130
31
|
extra_rdoc_files: []
|
|
131
32
|
files:
|
|
132
|
-
- ".
|
|
33
|
+
- ".github/workflows/ci.yml"
|
|
133
34
|
- ".gitignore"
|
|
134
35
|
- ".rspec"
|
|
135
36
|
- ".rubocop.yml"
|
|
136
37
|
- CHANGELOG.md
|
|
38
|
+
- CLAUDE.md
|
|
39
|
+
- Dockerfile
|
|
137
40
|
- Gemfile
|
|
138
41
|
- Gemfile.lock
|
|
139
42
|
- README.md
|
|
140
|
-
-
|
|
141
|
-
- bin/console
|
|
142
|
-
- bin/lex-memcached
|
|
143
|
-
- bin/setup
|
|
144
|
-
- bitbucket-pipelines.yml
|
|
43
|
+
- docker_deploy.rb
|
|
145
44
|
- lex-memcached.gemspec
|
|
146
45
|
- lib/legion/extensions/memcached.rb
|
|
46
|
+
- lib/legion/extensions/memcached/client.rb
|
|
147
47
|
- lib/legion/extensions/memcached/helpers/client.rb
|
|
148
48
|
- lib/legion/extensions/memcached/runners/item.rb
|
|
149
49
|
- lib/legion/extensions/memcached/runners/server.rb
|
|
150
50
|
- lib/legion/extensions/memcached/version.rb
|
|
151
|
-
homepage: https://
|
|
51
|
+
homepage: https://github.com/LegionIO/lex-memcached
|
|
152
52
|
licenses: []
|
|
153
53
|
metadata:
|
|
154
|
-
homepage_uri: https://
|
|
155
|
-
source_code_uri: https://
|
|
156
|
-
documentation_uri: https://
|
|
157
|
-
changelog_uri: https://
|
|
158
|
-
bug_tracker_uri: https://
|
|
159
|
-
|
|
54
|
+
homepage_uri: https://github.com/LegionIO/lex-memcached
|
|
55
|
+
source_code_uri: https://github.com/LegionIO/lex-memcached
|
|
56
|
+
documentation_uri: https://github.com/LegionIO/lex-memcached
|
|
57
|
+
changelog_uri: https://github.com/LegionIO/lex-memcached
|
|
58
|
+
bug_tracker_uri: https://github.com/LegionIO/lex-memcached/issues
|
|
59
|
+
rubygems_mfa_required: 'true'
|
|
160
60
|
rdoc_options: []
|
|
161
61
|
require_paths:
|
|
162
62
|
- lib
|
|
@@ -164,15 +64,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
164
64
|
requirements:
|
|
165
65
|
- - ">="
|
|
166
66
|
- !ruby/object:Gem::Version
|
|
167
|
-
version:
|
|
67
|
+
version: '3.4'
|
|
168
68
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
169
69
|
requirements:
|
|
170
70
|
- - ">="
|
|
171
71
|
- !ruby/object:Gem::Version
|
|
172
72
|
version: '0'
|
|
173
73
|
requirements: []
|
|
174
|
-
rubygems_version: 3.
|
|
175
|
-
signing_key:
|
|
74
|
+
rubygems_version: 3.6.9
|
|
176
75
|
specification_version: 4
|
|
177
76
|
summary: LEX::Memcached
|
|
178
77
|
test_files: []
|
data/.circleci/config.yml
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
version: 2.1
|
|
2
|
-
orbs:
|
|
3
|
-
ruby: circleci/ruby@0.2.1
|
|
4
|
-
|
|
5
|
-
jobs:
|
|
6
|
-
"rubocop":
|
|
7
|
-
docker:
|
|
8
|
-
- image: circleci/ruby:2.5-node
|
|
9
|
-
steps:
|
|
10
|
-
- checkout
|
|
11
|
-
- ruby/load-cache
|
|
12
|
-
- ruby/install-deps
|
|
13
|
-
- run:
|
|
14
|
-
name: Run Rubocop
|
|
15
|
-
command: bundle exec rubocop
|
|
16
|
-
- ruby/save-cache
|
|
17
|
-
"ruby-two-five":
|
|
18
|
-
docker:
|
|
19
|
-
- image: circleci/ruby:2.5
|
|
20
|
-
- image: memcached:1.5-alpine
|
|
21
|
-
steps:
|
|
22
|
-
- checkout
|
|
23
|
-
- ruby/load-cache
|
|
24
|
-
- ruby/install-deps
|
|
25
|
-
- ruby/run-tests
|
|
26
|
-
- ruby/save-cache
|
|
27
|
-
"ruby-two-six":
|
|
28
|
-
docker:
|
|
29
|
-
- image: circleci/ruby:2.6
|
|
30
|
-
- image: memcached:1.5-alpine
|
|
31
|
-
steps:
|
|
32
|
-
- checkout
|
|
33
|
-
- ruby/load-cache
|
|
34
|
-
- ruby/install-deps
|
|
35
|
-
- ruby/run-tests
|
|
36
|
-
- ruby/save-cache
|
|
37
|
-
"ruby-two-seven":
|
|
38
|
-
docker:
|
|
39
|
-
- image: circleci/ruby:2.7
|
|
40
|
-
- image: memcached:1.5-alpine
|
|
41
|
-
steps:
|
|
42
|
-
- checkout
|
|
43
|
-
- ruby/load-cache
|
|
44
|
-
- ruby/install-deps
|
|
45
|
-
- ruby/run-tests
|
|
46
|
-
- ruby/save-cache
|
|
47
|
-
|
|
48
|
-
workflows:
|
|
49
|
-
version: 2
|
|
50
|
-
rubocop-rspec:
|
|
51
|
-
jobs:
|
|
52
|
-
- rubocop
|
|
53
|
-
- ruby-two-five:
|
|
54
|
-
requires:
|
|
55
|
-
- rubocop
|
|
56
|
-
- ruby-two-six:
|
|
57
|
-
requires:
|
|
58
|
-
- ruby-two-five
|
|
59
|
-
- ruby-two-seven:
|
|
60
|
-
requires:
|
|
61
|
-
- ruby-two-five
|
data/Rakefile
DELETED
data/bin/console
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
require 'bundler/setup'
|
|
4
|
-
require 'legion/extensions/memcached'
|
|
5
|
-
|
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
|
8
|
-
|
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
|
10
|
-
# require "pry"
|
|
11
|
-
# Pry.start
|
|
12
|
-
|
|
13
|
-
require 'irb'
|
|
14
|
-
IRB.start(__FILE__)
|
data/bin/lex-memcached
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
# rubocop:disable all
|
|
4
|
-
require 'optparse'
|
|
5
|
-
|
|
6
|
-
options = { action: :run }
|
|
7
|
-
|
|
8
|
-
daemonize_help = 'run daemonized in the background (default: false)'
|
|
9
|
-
pidfile_help = 'the pid filename'
|
|
10
|
-
logfile_help = 'the log filename'
|
|
11
|
-
include_help = 'an additional $LOAD_PATH (may be used more than once)'
|
|
12
|
-
debug_help = 'set $DEBUG to true'
|
|
13
|
-
warn_help = 'enable warnings'
|
|
14
|
-
|
|
15
|
-
op = OptionParser.new
|
|
16
|
-
op.banner = 'An example of how to daemonize a long running Ruby process.'
|
|
17
|
-
op.separator ''
|
|
18
|
-
op.separator 'Usage: server [options]'
|
|
19
|
-
op.separator ''
|
|
20
|
-
|
|
21
|
-
op.separator ''
|
|
22
|
-
op.separator 'Process options:'
|
|
23
|
-
op.on('-d', '--daemonize', daemonize_help) { options[:daemonize] = true }
|
|
24
|
-
op.on('-p', '--pid PIDFILE', pidfile_help) { |value| options[:pidfile] = value }
|
|
25
|
-
op.on('-l', '--log LOGFILE', logfile_help) { |value| options[:logfile] = value }
|
|
26
|
-
|
|
27
|
-
op.separator ''
|
|
28
|
-
op.separator 'Ruby options:'
|
|
29
|
-
op.on('-I', '--include PATH', include_help) {
|
|
30
|
-
|value| $LOAD_PATH.unshift(*value.split(':').map {
|
|
31
|
-
|v| File.expand_path(v)
|
|
32
|
-
})
|
|
33
|
-
}
|
|
34
|
-
op.on('--debug', debug_help) { $DEBUG = true }
|
|
35
|
-
op.on('--warn', warn_help) { $-w = true }
|
|
36
|
-
|
|
37
|
-
op.separator ''
|
|
38
|
-
op.separator 'Common options:'
|
|
39
|
-
op.on('-h', '--help') { options[:action] = :help }
|
|
40
|
-
op.on('-v', '--version') { options[:action] = :version }
|
|
41
|
-
|
|
42
|
-
op.separator ''
|
|
43
|
-
op.parse!(ARGV)
|
|
44
|
-
|
|
45
|
-
#==============================================================================
|
|
46
|
-
# EXECUTE script
|
|
47
|
-
#==============================================================================
|
|
48
|
-
|
|
49
|
-
require File.expand_path('lib/legion.rb') unless options[:action] == :help
|
|
50
|
-
require File.expand_path('lib/legion/process.rb') unless options[:action] == :help
|
|
51
|
-
case options[:action]
|
|
52
|
-
when :help then puts op.to_s
|
|
53
|
-
when :version then puts Legion::VERSION
|
|
54
|
-
else
|
|
55
|
-
Legion::Process.run!(options)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
Legion::Process.new(options).run!
|
data/bin/setup
DELETED
data/bitbucket-pipelines.yml
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
image: ruby:2.7.0
|
|
2
|
-
|
|
3
|
-
pipelines:
|
|
4
|
-
tags:
|
|
5
|
-
"v*":
|
|
6
|
-
- step:
|
|
7
|
-
name: Push to RubyGems
|
|
8
|
-
deployment: RubyGems
|
|
9
|
-
script:
|
|
10
|
-
- gem install bundler gem-release rake rspec
|
|
11
|
-
- bundle install
|
|
12
|
-
- rake build
|
|
13
|
-
- mkdir .gem
|
|
14
|
-
- (umask 077 ; echo $gem_creds | base64 --decode > .gem/credentials)
|
|
15
|
-
- gem release
|
|
16
|
-
artifacts:
|
|
17
|
-
- pkg/**
|