lhm-shopify 4.2.1 → 4.5.1
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/dependabot.yml +20 -0
- data/.github/workflows/test.yml +9 -4
- data/.gitignore +0 -1
- data/.ruby-version +1 -0
- data/Appraisals +6 -8
- data/CHANGELOG.md +29 -0
- data/Gemfile.lock +36 -27
- data/README.md +30 -1
- data/dev.yml +6 -7
- data/gemfiles/{activerecord_6.1.gemfile → activerecord_7.2.gemfile} +1 -2
- data/gemfiles/{activerecord_6.1.gemfile.lock → activerecord_7.2.gemfile.lock} +36 -22
- data/gemfiles/{activerecord_7.1.gemfile → activerecord_8.0.gemfile} +1 -1
- data/gemfiles/{activerecord_7.1.gemfile.lock → activerecord_8.0.gemfile.lock} +31 -22
- data/gemfiles/{activerecord_7.0.gemfile → activerecord_head.gemfile} +1 -2
- data/gemfiles/activerecord_head.gemfile.lock +96 -0
- data/lhm.gemspec +2 -0
- data/lib/lhm/chunker.rb +13 -4
- data/lib/lhm/entangler.rb +1 -1
- data/lib/lhm/intersection.rb +3 -2
- data/lib/lhm/invoker.rb +8 -7
- data/lib/lhm/migration.rb +3 -2
- data/lib/lhm/migrator.rb +25 -10
- data/lib/lhm/sql_helper.rb +1 -1
- data/lib/lhm/sql_retry.rb +1 -0
- data/lib/lhm/throttler/backoff_reduction.rb +42 -0
- data/lib/lhm/throttler/replica_lag.rb +4 -18
- data/lib/lhm/throttler/threads_running.rb +3 -0
- data/lib/lhm/throttler/time.rb +5 -0
- data/lib/lhm/throttler.rb +1 -0
- data/lib/lhm/version.rb +1 -1
- data/lib/lhm.rb +2 -2
- data/spec/fixtures/composite_primary_key_with_varchar_columns.ddl +10 -0
- data/spec/fixtures/composite_primary_key_with_varchar_columns_dest.ddl +10 -0
- data/spec/fixtures/myisam_users.ddl +10 -0
- data/spec/integration/chunker_spec.rb +115 -0
- data/spec/integration/cleanup_spec.rb +1 -0
- data/spec/integration/lhm_spec.rb +102 -15
- data/spec/integration/sql_retry/db_connection_helper.rb +1 -1
- data/spec/integration/sql_retry/lock_wait_spec.rb +4 -2
- data/spec/unit/entangler_spec.rb +14 -14
- data/spec/unit/migrator_spec.rb +34 -4
- data/spec/unit/throttler/replica_lag_spec.rb +1 -5
- data/spec/unit/throttler_spec.rb +60 -0
- metadata +43 -12
- data/gemfiles/activerecord_7.0.gemfile.lock +0 -74
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f6810104b2e7de311501c58b38b5ab605bf808b2391e9406901dd97394ae29c2
|
|
4
|
+
data.tar.gz: 251bdd83425a0986d5d3cdded7fc05e4d53731eb86269a3059f2524780287b6e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 866539e9bcac6acc7740766524d52e87de8572bde63d336b4dd1636c87da876d178729eaa5e716dafed53339c903ba79677980a0f29346c8ad36e0cebb145e7f
|
|
7
|
+
data.tar.gz: 0c7840100abf5b849e6750061f269fab888633bba7afd287cad3461e70e941f26f9a7a42fd215effa89797c7841c0b1200aab69d44d1119c79951ef53e8dee98
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
registries:
|
|
3
|
+
ruby-shopify:
|
|
4
|
+
type: rubygems-server
|
|
5
|
+
url: https://pkgs.shopify.io/basic/gems/ruby
|
|
6
|
+
username: ${{secrets.RUBYGEMS_SERVER_PKGS_SHOPIFY_IO_USERNAME}}
|
|
7
|
+
password: ${{secrets.RUBYGEMS_SERVER_PKGS_SHOPIFY_IO_PASSWORD}}
|
|
8
|
+
github-com:
|
|
9
|
+
type: git
|
|
10
|
+
url: https://github.com
|
|
11
|
+
username: ${{secrets.DEPENDENCIES_GITHUB_USER}}
|
|
12
|
+
password: ${{secrets.DEPENDENCIES_GITHUB_TOKEN}}
|
|
13
|
+
updates:
|
|
14
|
+
- package-ecosystem: bundler
|
|
15
|
+
directory: "/"
|
|
16
|
+
schedule:
|
|
17
|
+
interval: daily
|
|
18
|
+
open-pull-requests-limit: 100
|
|
19
|
+
insecure-external-code-execution: allow
|
|
20
|
+
registries: "*"
|
data/.github/workflows/test.yml
CHANGED
|
@@ -13,16 +13,21 @@ jobs:
|
|
|
13
13
|
|
|
14
14
|
strategy:
|
|
15
15
|
fail-fast: false
|
|
16
|
+
max-parallel: 8
|
|
16
17
|
matrix:
|
|
17
|
-
activerecord: ["
|
|
18
|
-
ruby: ["3.
|
|
18
|
+
activerecord: ["7.2", "8.0", "head"]
|
|
19
|
+
ruby: ["3.1", "3.2", "3.3", "head"]
|
|
19
20
|
mysql: ["5.7", "8.0"]
|
|
20
21
|
adapter: ["mysql2", "trilogy"]
|
|
21
22
|
exclude:
|
|
22
23
|
- activerecord: 6.1
|
|
23
24
|
ruby: head
|
|
24
|
-
- activerecord: 7.
|
|
25
|
+
- activerecord: 7.2
|
|
25
26
|
ruby: head
|
|
27
|
+
- activerecord: 8.0
|
|
28
|
+
ruby: 3.1
|
|
29
|
+
- activerecord: head
|
|
30
|
+
ruby: 3.1
|
|
26
31
|
|
|
27
32
|
env:
|
|
28
33
|
BUNDLE_GEMFILE: "${{ github.workspace }}/gemfiles/activerecord_${{ matrix.activerecord }}.gemfile"
|
|
@@ -40,7 +45,7 @@ jobs:
|
|
|
40
45
|
|
|
41
46
|
- name: Setup MySQL and ProxySQL (docker-compose)
|
|
42
47
|
# Might have to change to docker compose up -d (i.e. Compose V2) when the Ubuntu image changes the docker-compose version
|
|
43
|
-
run: docker
|
|
48
|
+
run: docker compose -f docker-compose-mysql-${{ matrix.mysql }}.yml up -d
|
|
44
49
|
|
|
45
50
|
- name: Wait until DBs are alive
|
|
46
51
|
run: ./scripts/helpers/wait-for-dbs.sh
|
data/.gitignore
CHANGED
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.3.6
|
data/Appraisals
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
appraise "activerecord-
|
|
2
|
-
gem "activerecord", "
|
|
3
|
-
gem "activerecord-trilogy-adapter"
|
|
1
|
+
appraise "activerecord-7.2" do
|
|
2
|
+
gem "activerecord", "7.2.2.1"
|
|
4
3
|
end
|
|
5
4
|
|
|
6
|
-
appraise "activerecord-
|
|
7
|
-
gem "activerecord", "
|
|
8
|
-
gem "activerecord-trilogy-adapter"
|
|
5
|
+
appraise "activerecord-8.0" do
|
|
6
|
+
gem "activerecord", "8.0.1"
|
|
9
7
|
end
|
|
10
8
|
|
|
11
|
-
appraise "activerecord-
|
|
12
|
-
gem "activerecord", "
|
|
9
|
+
appraise "activerecord-head" do
|
|
10
|
+
gem "activerecord", git: "https://github.com/rails/rails.git", branch: "main"
|
|
13
11
|
end
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# Unreleased
|
|
2
2
|
|
|
3
|
+
# 4.5.1 (Jul, 2025)
|
|
4
|
+
* Create update before insert trigger
|
|
5
|
+
|
|
6
|
+
# 4.5.0 (Feb, 2025)
|
|
7
|
+
* Update test matrix to include Rails 8
|
|
8
|
+
* Add option to force tables to use default engine
|
|
9
|
+
* Change default algorithm for add/rename/remove column operations
|
|
10
|
+
* Drop support for ActiveRecord version 6.1, as it has reached EOL
|
|
11
|
+
* Add support for tables with generated columns
|
|
12
|
+
|
|
13
|
+
# 4.4.2 (Sep, 2024)
|
|
14
|
+
* Allow caller to set the algorithm that will be used for DDL ALTER TABLE operations
|
|
15
|
+
|
|
16
|
+
# 4.4.1 (Aug, 2024)
|
|
17
|
+
* Extend max_binlog_cache_size exceeded error handling to all throttlers
|
|
18
|
+
|
|
19
|
+
# 4.4.0 (Aug, 2024)
|
|
20
|
+
* Add support for retrying chunks when running into max_binlog_cache_size exceeded error
|
|
21
|
+
|
|
22
|
+
# 4.3.0 (Aug, 2024)
|
|
23
|
+
* Drop support for Ruby 3.0, as it reached its EOL
|
|
24
|
+
* Add support for next Rails version
|
|
25
|
+
|
|
26
|
+
# 4.2.3 (Jul, 2024)
|
|
27
|
+
* Fix check for warnings against PKs with line breaks
|
|
28
|
+
|
|
29
|
+
# 4.2.2 (Jun, 2024)
|
|
30
|
+
* Avoid using the INSTANT algorithm.
|
|
31
|
+
|
|
3
32
|
# 4.2.1 (Mar, 2024)
|
|
4
33
|
* Retry more errors when using Trilogy.
|
|
5
34
|
|
data/Gemfile.lock
CHANGED
|
@@ -1,67 +1,74 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
lhm-shopify (4.
|
|
4
|
+
lhm-shopify (4.5.1)
|
|
5
5
|
retriable (>= 3.0.0)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
activemodel (
|
|
11
|
-
activesupport (=
|
|
12
|
-
activerecord (
|
|
13
|
-
activemodel (=
|
|
14
|
-
activesupport (=
|
|
10
|
+
activemodel (8.0.1)
|
|
11
|
+
activesupport (= 8.0.1)
|
|
12
|
+
activerecord (8.0.1)
|
|
13
|
+
activemodel (= 8.0.1)
|
|
14
|
+
activesupport (= 8.0.1)
|
|
15
15
|
timeout (>= 0.4.0)
|
|
16
|
-
activesupport (
|
|
16
|
+
activesupport (8.0.1)
|
|
17
17
|
base64
|
|
18
|
+
benchmark (>= 0.3)
|
|
18
19
|
bigdecimal
|
|
19
|
-
concurrent-ruby (~> 1.0, >= 1.
|
|
20
|
+
concurrent-ruby (~> 1.0, >= 1.3.1)
|
|
20
21
|
connection_pool (>= 2.2.5)
|
|
21
22
|
drb
|
|
22
23
|
i18n (>= 1.6, < 2)
|
|
24
|
+
logger (>= 1.4.2)
|
|
23
25
|
minitest (>= 5.1)
|
|
24
|
-
|
|
25
|
-
tzinfo (~> 2.0)
|
|
26
|
+
securerandom (>= 0.3)
|
|
27
|
+
tzinfo (~> 2.0, >= 2.0.5)
|
|
28
|
+
uri (>= 0.13.1)
|
|
26
29
|
after_do (0.4.0)
|
|
27
30
|
appraisal (2.5.0)
|
|
28
31
|
bundler
|
|
29
32
|
rake
|
|
30
33
|
thor (>= 0.14.0)
|
|
31
|
-
base64 (0.
|
|
32
|
-
|
|
34
|
+
base64 (0.2.0)
|
|
35
|
+
benchmark (0.4.0)
|
|
36
|
+
bigdecimal (3.1.9)
|
|
33
37
|
byebug (11.1.3)
|
|
34
|
-
concurrent-ruby (1.
|
|
35
|
-
connection_pool (2.
|
|
36
|
-
docile (1.4.
|
|
37
|
-
drb (2.
|
|
38
|
-
|
|
39
|
-
i18n (1.14.1)
|
|
38
|
+
concurrent-ruby (1.3.5)
|
|
39
|
+
connection_pool (2.5.0)
|
|
40
|
+
docile (1.4.1)
|
|
41
|
+
drb (2.2.1)
|
|
42
|
+
i18n (1.14.7)
|
|
40
43
|
concurrent-ruby (~> 1.0)
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
logger (1.6.5)
|
|
45
|
+
minitest (5.25.4)
|
|
46
|
+
mocha (2.4.5)
|
|
43
47
|
ruby2_keywords (>= 0.0.5)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
rake (13.
|
|
48
|
+
mysql2 (0.5.6)
|
|
49
|
+
ostruct (0.6.1)
|
|
50
|
+
rake (13.2.1)
|
|
47
51
|
retriable (3.1.2)
|
|
48
52
|
ruby2_keywords (0.0.5)
|
|
53
|
+
securerandom (0.4.1)
|
|
49
54
|
simplecov (0.22.0)
|
|
50
55
|
docile (~> 1.1)
|
|
51
56
|
simplecov-html (~> 0.11)
|
|
52
57
|
simplecov_json_formatter (~> 0.1)
|
|
53
58
|
simplecov-html (0.12.3)
|
|
54
59
|
simplecov_json_formatter (0.1.4)
|
|
55
|
-
thor (1.
|
|
56
|
-
timeout (0.4.
|
|
60
|
+
thor (1.3.2)
|
|
61
|
+
timeout (0.4.3)
|
|
57
62
|
toxiproxy (2.0.2)
|
|
58
|
-
trilogy (2.
|
|
63
|
+
trilogy (2.8.1)
|
|
59
64
|
tzinfo (2.0.6)
|
|
60
65
|
concurrent-ruby (~> 1.0)
|
|
66
|
+
uri (1.0.2)
|
|
61
67
|
|
|
62
68
|
PLATFORMS
|
|
63
69
|
arm64-darwin-21
|
|
64
70
|
arm64-darwin-22
|
|
71
|
+
arm64-darwin-23
|
|
65
72
|
x86_64-darwin-20
|
|
66
73
|
x86_64-linux
|
|
67
74
|
|
|
@@ -71,13 +78,15 @@ DEPENDENCIES
|
|
|
71
78
|
appraisal
|
|
72
79
|
byebug
|
|
73
80
|
lhm-shopify!
|
|
81
|
+
logger
|
|
74
82
|
minitest
|
|
75
83
|
mocha
|
|
76
84
|
mysql2
|
|
85
|
+
ostruct
|
|
77
86
|
rake
|
|
78
87
|
simplecov
|
|
79
88
|
toxiproxy
|
|
80
89
|
trilogy
|
|
81
90
|
|
|
82
91
|
BUNDLED WITH
|
|
83
|
-
2.
|
|
92
|
+
2.6.3
|
data/README.md
CHANGED
|
@@ -207,6 +207,35 @@ Or to set that as default throttler, use the following (for instance in a Rails
|
|
|
207
207
|
Lhm.setup_throttler(:threads_running_throttler)
|
|
208
208
|
```
|
|
209
209
|
|
|
210
|
+
### Retrying chunks using Throttler
|
|
211
|
+
|
|
212
|
+
If chunks fail due to the MySQL `max_binlog_cache_size` being exceeded, the Chunker class will call the `backoff_stride` method on the throttler to reduce the stride size and retry the chunk. The default backoff factor is 0.2 (reducing the chunk size by 20% with each failure), and the minimum stride size is 1 (the stride can be reduced until each chunk is 1 row). Default values can be overridden (see below). To disable backoff, set `min_stride_size` equal to `stride_size`; this will throw an exception when `max_binlog_cache_size` is exceeded. Configuration options should be passed into the time throttler constructor or in the `throttler_options` of change_table when using a time throttler.
|
|
213
|
+
|
|
214
|
+
```ruby
|
|
215
|
+
## Configure on throttler instance
|
|
216
|
+
my_throttler = Lhm::Throttler::ThreadsRunning.new(stride: 2000, delay: 1, backoff_reduction_factor: 0.1, min_stride_size: 10)
|
|
217
|
+
|
|
218
|
+
Lhm.change_table :users, throttler: my_throttler do |m|
|
|
219
|
+
...
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
## Or pass as throttler options
|
|
223
|
+
Lhm.change_table :users, {
|
|
224
|
+
throttler: :time_throttler,
|
|
225
|
+
throttler_options: {
|
|
226
|
+
stride: 2000,
|
|
227
|
+
delay: 1,
|
|
228
|
+
backoff_reduction_factor: 0.1,
|
|
229
|
+
min_stride_size: 10
|
|
230
|
+
}
|
|
231
|
+
} do |t|
|
|
232
|
+
...
|
|
233
|
+
end
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Custom Throttlers with retry functionality
|
|
237
|
+
If using your own throttler, ensure that the class definition includes the `Lhm::Throttler::BackoffReduction` to retry failed chunks.
|
|
238
|
+
|
|
210
239
|
## Table rename strategies
|
|
211
240
|
|
|
212
241
|
There are two different table rename strategies available: `LockedSwitcher` and
|
|
@@ -311,7 +340,7 @@ open coverage/index.html
|
|
|
311
340
|
```
|
|
312
341
|
|
|
313
342
|
### Merging for a new version
|
|
314
|
-
When creating a PR for a new version, make sure that
|
|
343
|
+
When creating a PR for a new version, make sure that the version has been bumped in `lib/lhm/version.rb`. Then run the following code snippet to ensure the everything is consistent, otherwise
|
|
315
344
|
the gem will not publish.
|
|
316
345
|
```bash
|
|
317
346
|
bundle install
|
data/dev.yml
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
name: lhm
|
|
2
2
|
up:
|
|
3
|
-
-
|
|
4
|
-
- mysql-client
|
|
5
|
-
or: [mysql@5.7]
|
|
6
|
-
conflicts: [shopify/shopify/mysql-client, mysql-connector-c, mysql, mysql-client]
|
|
3
|
+
- packages:
|
|
4
|
+
- mysql-client
|
|
7
5
|
- wget
|
|
8
|
-
- ruby
|
|
6
|
+
- ruby
|
|
9
7
|
- bundler
|
|
10
8
|
- podman
|
|
11
9
|
- custom:
|
|
@@ -14,8 +12,9 @@ up:
|
|
|
14
12
|
meet: ":"
|
|
15
13
|
- custom:
|
|
16
14
|
name: Podman compose
|
|
17
|
-
met?: podman-compose ps | grep -
|
|
18
|
-
meet: podman-compose up -d
|
|
15
|
+
met?: "[[ $(podman-compose ps | grep -c -e 'running' -e 'Up') == 4 ]] 2> /dev/null"
|
|
16
|
+
meet: podman-compose -f docker-compose-mysql-8.0.yml up -d
|
|
17
|
+
down: podman-compose down
|
|
19
18
|
- custom:
|
|
20
19
|
name: Waiting for DBs to be operational
|
|
21
20
|
met?: ./scripts/helpers/wait-for-dbs.sh
|
|
@@ -1,76 +1,90 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: ..
|
|
3
3
|
specs:
|
|
4
|
-
lhm-shopify (4.
|
|
4
|
+
lhm-shopify (4.5.1)
|
|
5
5
|
retriable (>= 3.0.0)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
activemodel (
|
|
11
|
-
activesupport (=
|
|
12
|
-
activerecord (
|
|
13
|
-
activemodel (=
|
|
14
|
-
activesupport (=
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
10
|
+
activemodel (7.2.2.1)
|
|
11
|
+
activesupport (= 7.2.2.1)
|
|
12
|
+
activerecord (7.2.2.1)
|
|
13
|
+
activemodel (= 7.2.2.1)
|
|
14
|
+
activesupport (= 7.2.2.1)
|
|
15
|
+
timeout (>= 0.4.0)
|
|
16
|
+
activesupport (7.2.2.1)
|
|
17
|
+
base64
|
|
18
|
+
benchmark (>= 0.3)
|
|
19
|
+
bigdecimal
|
|
20
|
+
concurrent-ruby (~> 1.0, >= 1.3.1)
|
|
21
|
+
connection_pool (>= 2.2.5)
|
|
22
|
+
drb
|
|
20
23
|
i18n (>= 1.6, < 2)
|
|
24
|
+
logger (>= 1.4.2)
|
|
21
25
|
minitest (>= 5.1)
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
securerandom (>= 0.3)
|
|
27
|
+
tzinfo (~> 2.0, >= 2.0.5)
|
|
24
28
|
after_do (0.4.0)
|
|
25
29
|
appraisal (2.5.0)
|
|
26
30
|
bundler
|
|
27
31
|
rake
|
|
28
32
|
thor (>= 0.14.0)
|
|
33
|
+
base64 (0.2.0)
|
|
34
|
+
benchmark (0.4.0)
|
|
35
|
+
bigdecimal (3.1.9)
|
|
29
36
|
byebug (11.1.3)
|
|
30
|
-
concurrent-ruby (1.
|
|
37
|
+
concurrent-ruby (1.3.5)
|
|
38
|
+
connection_pool (2.5.0)
|
|
31
39
|
docile (1.4.0)
|
|
32
|
-
|
|
40
|
+
drb (2.2.1)
|
|
41
|
+
i18n (1.14.7)
|
|
33
42
|
concurrent-ruby (~> 1.0)
|
|
34
|
-
|
|
43
|
+
logger (1.6.5)
|
|
44
|
+
minitest (5.25.4)
|
|
35
45
|
mocha (2.1.0)
|
|
36
46
|
ruby2_keywords (>= 0.0.5)
|
|
37
47
|
mysql2 (0.5.5)
|
|
48
|
+
ostruct (0.6.1)
|
|
38
49
|
rake (13.0.6)
|
|
39
50
|
retriable (3.1.2)
|
|
40
51
|
ruby2_keywords (0.0.5)
|
|
52
|
+
securerandom (0.4.1)
|
|
41
53
|
simplecov (0.22.0)
|
|
42
54
|
docile (~> 1.1)
|
|
43
55
|
simplecov-html (~> 0.11)
|
|
44
56
|
simplecov_json_formatter (~> 0.1)
|
|
45
57
|
simplecov-html (0.12.3)
|
|
46
58
|
simplecov_json_formatter (0.1.4)
|
|
47
|
-
thor (1.
|
|
59
|
+
thor (1.3.2)
|
|
60
|
+
timeout (0.4.3)
|
|
48
61
|
toxiproxy (2.0.2)
|
|
49
|
-
trilogy (2.
|
|
62
|
+
trilogy (2.9.0)
|
|
50
63
|
tzinfo (2.0.6)
|
|
51
64
|
concurrent-ruby (~> 1.0)
|
|
52
|
-
zeitwerk (2.6.12)
|
|
53
65
|
|
|
54
66
|
PLATFORMS
|
|
55
67
|
arm64-darwin-21
|
|
56
68
|
arm64-darwin-22
|
|
69
|
+
arm64-darwin-23
|
|
57
70
|
x86_64-darwin-20
|
|
58
71
|
x86_64-linux
|
|
59
72
|
|
|
60
73
|
DEPENDENCIES
|
|
61
|
-
activerecord (=
|
|
62
|
-
activerecord-trilogy-adapter
|
|
74
|
+
activerecord (= 7.2.2.1)
|
|
63
75
|
after_do
|
|
64
76
|
appraisal
|
|
65
77
|
byebug
|
|
66
78
|
lhm-shopify!
|
|
79
|
+
logger
|
|
67
80
|
minitest
|
|
68
81
|
mocha
|
|
69
82
|
mysql2
|
|
83
|
+
ostruct
|
|
70
84
|
rake
|
|
71
85
|
simplecov
|
|
72
86
|
toxiproxy
|
|
73
87
|
trilogy
|
|
74
88
|
|
|
75
89
|
BUNDLED WITH
|
|
76
|
-
2.
|
|
90
|
+
2.6.3
|
|
@@ -1,83 +1,92 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: ..
|
|
3
3
|
specs:
|
|
4
|
-
lhm-shopify (4.
|
|
4
|
+
lhm-shopify (4.5.1)
|
|
5
5
|
retriable (>= 3.0.0)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
activemodel (
|
|
11
|
-
activesupport (=
|
|
12
|
-
activerecord (
|
|
13
|
-
activemodel (=
|
|
14
|
-
activesupport (=
|
|
10
|
+
activemodel (8.0.1)
|
|
11
|
+
activesupport (= 8.0.1)
|
|
12
|
+
activerecord (8.0.1)
|
|
13
|
+
activemodel (= 8.0.1)
|
|
14
|
+
activesupport (= 8.0.1)
|
|
15
15
|
timeout (>= 0.4.0)
|
|
16
|
-
activesupport (
|
|
16
|
+
activesupport (8.0.1)
|
|
17
17
|
base64
|
|
18
|
+
benchmark (>= 0.3)
|
|
18
19
|
bigdecimal
|
|
19
|
-
concurrent-ruby (~> 1.0, >= 1.
|
|
20
|
+
concurrent-ruby (~> 1.0, >= 1.3.1)
|
|
20
21
|
connection_pool (>= 2.2.5)
|
|
21
22
|
drb
|
|
22
23
|
i18n (>= 1.6, < 2)
|
|
24
|
+
logger (>= 1.4.2)
|
|
23
25
|
minitest (>= 5.1)
|
|
24
|
-
|
|
25
|
-
tzinfo (~> 2.0)
|
|
26
|
+
securerandom (>= 0.3)
|
|
27
|
+
tzinfo (~> 2.0, >= 2.0.5)
|
|
28
|
+
uri (>= 0.13.1)
|
|
26
29
|
after_do (0.4.0)
|
|
27
30
|
appraisal (2.5.0)
|
|
28
31
|
bundler
|
|
29
32
|
rake
|
|
30
33
|
thor (>= 0.14.0)
|
|
31
|
-
base64 (0.
|
|
32
|
-
|
|
34
|
+
base64 (0.2.0)
|
|
35
|
+
benchmark (0.4.0)
|
|
36
|
+
bigdecimal (3.1.9)
|
|
33
37
|
byebug (11.1.3)
|
|
34
|
-
concurrent-ruby (1.
|
|
35
|
-
connection_pool (2.
|
|
38
|
+
concurrent-ruby (1.3.5)
|
|
39
|
+
connection_pool (2.5.0)
|
|
36
40
|
docile (1.4.0)
|
|
37
|
-
drb (2.
|
|
38
|
-
ruby2_keywords
|
|
41
|
+
drb (2.2.1)
|
|
39
42
|
i18n (1.14.1)
|
|
40
43
|
concurrent-ruby (~> 1.0)
|
|
44
|
+
logger (1.6.1)
|
|
41
45
|
minitest (5.22.2)
|
|
42
46
|
mocha (2.1.0)
|
|
43
47
|
ruby2_keywords (>= 0.0.5)
|
|
44
|
-
mutex_m (0.1.2)
|
|
45
48
|
mysql2 (0.5.5)
|
|
49
|
+
ostruct (0.6.1)
|
|
46
50
|
rake (13.0.6)
|
|
47
51
|
retriable (3.1.2)
|
|
48
52
|
ruby2_keywords (0.0.5)
|
|
53
|
+
securerandom (0.4.1)
|
|
49
54
|
simplecov (0.22.0)
|
|
50
55
|
docile (~> 1.1)
|
|
51
56
|
simplecov-html (~> 0.11)
|
|
52
57
|
simplecov_json_formatter (~> 0.1)
|
|
53
58
|
simplecov-html (0.12.3)
|
|
54
59
|
simplecov_json_formatter (0.1.4)
|
|
55
|
-
thor (1.
|
|
56
|
-
timeout (0.4.
|
|
60
|
+
thor (1.3.2)
|
|
61
|
+
timeout (0.4.3)
|
|
57
62
|
toxiproxy (2.0.2)
|
|
58
|
-
trilogy (2.
|
|
63
|
+
trilogy (2.9.0)
|
|
59
64
|
tzinfo (2.0.6)
|
|
60
65
|
concurrent-ruby (~> 1.0)
|
|
66
|
+
uri (1.0.2)
|
|
61
67
|
|
|
62
68
|
PLATFORMS
|
|
63
69
|
arm64-darwin-21
|
|
64
70
|
arm64-darwin-22
|
|
71
|
+
arm64-darwin-23
|
|
65
72
|
x86_64-darwin-20
|
|
66
73
|
x86_64-linux
|
|
67
74
|
|
|
68
75
|
DEPENDENCIES
|
|
69
|
-
activerecord (=
|
|
76
|
+
activerecord (= 8.0.1)
|
|
70
77
|
after_do
|
|
71
78
|
appraisal
|
|
72
79
|
byebug
|
|
73
80
|
lhm-shopify!
|
|
81
|
+
logger
|
|
74
82
|
minitest
|
|
75
83
|
mocha
|
|
76
84
|
mysql2
|
|
85
|
+
ostruct
|
|
77
86
|
rake
|
|
78
87
|
simplecov
|
|
79
88
|
toxiproxy
|
|
80
89
|
trilogy
|
|
81
90
|
|
|
82
91
|
BUNDLED WITH
|
|
83
|
-
2.
|
|
92
|
+
2.6.3
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
GIT
|
|
2
|
+
remote: https://github.com/rails/rails.git
|
|
3
|
+
revision: bdad2707835949a96dd29e747b8c324593efd4d8
|
|
4
|
+
branch: main
|
|
5
|
+
specs:
|
|
6
|
+
activemodel (8.1.0.alpha)
|
|
7
|
+
activesupport (= 8.1.0.alpha)
|
|
8
|
+
activerecord (8.1.0.alpha)
|
|
9
|
+
activemodel (= 8.1.0.alpha)
|
|
10
|
+
activesupport (= 8.1.0.alpha)
|
|
11
|
+
timeout (>= 0.4.0)
|
|
12
|
+
activesupport (8.1.0.alpha)
|
|
13
|
+
base64
|
|
14
|
+
benchmark (>= 0.3)
|
|
15
|
+
bigdecimal
|
|
16
|
+
concurrent-ruby (~> 1.0, >= 1.3.1)
|
|
17
|
+
connection_pool (>= 2.2.5)
|
|
18
|
+
drb
|
|
19
|
+
i18n (>= 1.6, < 2)
|
|
20
|
+
logger (>= 1.4.2)
|
|
21
|
+
minitest (>= 5.1)
|
|
22
|
+
securerandom (>= 0.3)
|
|
23
|
+
tzinfo (~> 2.0, >= 2.0.5)
|
|
24
|
+
uri (>= 0.13.1)
|
|
25
|
+
|
|
26
|
+
PATH
|
|
27
|
+
remote: ..
|
|
28
|
+
specs:
|
|
29
|
+
lhm-shopify (4.5.1)
|
|
30
|
+
retriable (>= 3.0.0)
|
|
31
|
+
|
|
32
|
+
GEM
|
|
33
|
+
remote: https://rubygems.org/
|
|
34
|
+
specs:
|
|
35
|
+
after_do (0.4.0)
|
|
36
|
+
appraisal (2.5.0)
|
|
37
|
+
bundler
|
|
38
|
+
rake
|
|
39
|
+
thor (>= 0.14.0)
|
|
40
|
+
base64 (0.2.0)
|
|
41
|
+
benchmark (0.4.0)
|
|
42
|
+
bigdecimal (3.1.9)
|
|
43
|
+
byebug (11.1.3)
|
|
44
|
+
concurrent-ruby (1.3.5)
|
|
45
|
+
connection_pool (2.5.0)
|
|
46
|
+
docile (1.4.1)
|
|
47
|
+
drb (2.2.1)
|
|
48
|
+
i18n (1.14.7)
|
|
49
|
+
concurrent-ruby (~> 1.0)
|
|
50
|
+
logger (1.6.5)
|
|
51
|
+
minitest (5.25.4)
|
|
52
|
+
mocha (2.4.5)
|
|
53
|
+
ruby2_keywords (>= 0.0.5)
|
|
54
|
+
mysql2 (0.5.6)
|
|
55
|
+
ostruct (0.6.1)
|
|
56
|
+
rake (13.2.1)
|
|
57
|
+
retriable (3.1.2)
|
|
58
|
+
ruby2_keywords (0.0.5)
|
|
59
|
+
securerandom (0.4.1)
|
|
60
|
+
simplecov (0.22.0)
|
|
61
|
+
docile (~> 1.1)
|
|
62
|
+
simplecov-html (~> 0.11)
|
|
63
|
+
simplecov_json_formatter (~> 0.1)
|
|
64
|
+
simplecov-html (0.12.3)
|
|
65
|
+
simplecov_json_formatter (0.1.4)
|
|
66
|
+
thor (1.3.2)
|
|
67
|
+
timeout (0.4.3)
|
|
68
|
+
toxiproxy (2.0.2)
|
|
69
|
+
trilogy (2.9.0)
|
|
70
|
+
tzinfo (2.0.6)
|
|
71
|
+
concurrent-ruby (~> 1.0)
|
|
72
|
+
uri (1.0.2)
|
|
73
|
+
|
|
74
|
+
PLATFORMS
|
|
75
|
+
arm64-darwin-22
|
|
76
|
+
arm64-darwin-23
|
|
77
|
+
x86_64-linux
|
|
78
|
+
|
|
79
|
+
DEPENDENCIES
|
|
80
|
+
activerecord!
|
|
81
|
+
after_do
|
|
82
|
+
appraisal
|
|
83
|
+
byebug
|
|
84
|
+
lhm-shopify!
|
|
85
|
+
logger
|
|
86
|
+
minitest
|
|
87
|
+
mocha
|
|
88
|
+
mysql2
|
|
89
|
+
ostruct
|
|
90
|
+
rake
|
|
91
|
+
simplecov
|
|
92
|
+
toxiproxy
|
|
93
|
+
trilogy
|
|
94
|
+
|
|
95
|
+
BUNDLED WITH
|
|
96
|
+
2.6.3
|