bidi2pdf 0.1.13 → 0.1.14

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.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/Dockerfile +53 -0
  3. data/.devcontainer/devcontainer.json +51 -0
  4. data/.devcontainer/docker-compose.yml +33 -0
  5. data/.ruby-gemset +1 -1
  6. data/.ruby-version +1 -1
  7. data/CHANGELOG.md +46 -6
  8. data/README.md +12 -0
  9. data/docker/Dockerfile +1 -1
  10. data/docker/Dockerfile.slim +2 -2
  11. data/docker/chrome-driver/chrome.json +874 -0
  12. data/lib/bidi2pdf/bidi/browser_tab.rb +52 -0
  13. data/lib/bidi2pdf/bidi/commands/capture_screenshot.rb +33 -0
  14. data/lib/bidi2pdf/bidi/commands/set_viewport.rb +32 -0
  15. data/lib/bidi2pdf/bidi/commands.rb +2 -0
  16. data/lib/bidi2pdf/cli.rb +11 -1
  17. data/lib/bidi2pdf/launcher.rb +5 -3
  18. data/lib/bidi2pdf/test_helpers/images.rb +8 -0
  19. data/lib/bidi2pdf/test_helpers/pdf_reader_utils.rb +1 -2
  20. data/lib/bidi2pdf/test_helpers/pdf_text_sanitizer.rb +1 -2
  21. data/lib/bidi2pdf/test_helpers/testcontainers/chromedriver_container.rb +1 -1
  22. data/lib/bidi2pdf/test_helpers/testcontainers/chromedriver_test_helper.rb +18 -0
  23. data/lib/bidi2pdf/test_helpers/testcontainers/container_endpoint.rb +30 -0
  24. data/lib/bidi2pdf/test_helpers/testcontainers/testcontainers_refinement.rb +33 -0
  25. data/lib/bidi2pdf/test_helpers/testcontainers.rb +1 -0
  26. data/lib/bidi2pdf/version.rb +1 -1
  27. data/lib/bidi2pdf.rb +2 -0
  28. data/sig/bidi2pdf/bidi/add_headers_interceptor.rbs +16 -9
  29. data/sig/bidi2pdf/bidi/auth_interceptor.rbs +32 -7
  30. data/sig/bidi2pdf/bidi/browser.rbs +4 -31
  31. data/sig/bidi2pdf/bidi/browser_console_logger.rbs +59 -0
  32. data/sig/bidi2pdf/bidi/browser_tab.rbs +252 -25
  33. data/sig/bidi2pdf/bidi/client.rbs +95 -43
  34. data/sig/bidi2pdf/bidi/command_manager.rbs +5 -17
  35. data/sig/bidi2pdf/bidi/commands/add_intercept.rbs +16 -8
  36. data/sig/bidi2pdf/bidi/commands/base.rbs +49 -9
  37. data/sig/bidi2pdf/bidi/commands/browser_close.rbs +3 -1
  38. data/sig/bidi2pdf/bidi/commands/browser_create_user_context.rbs +2 -0
  39. data/sig/bidi2pdf/bidi/commands/browser_remove_user_context.rbs +19 -0
  40. data/sig/bidi2pdf/bidi/commands/browsing_context_close.rbs +8 -2
  41. data/sig/bidi2pdf/bidi/commands/browsing_context_navigate.rbs +12 -6
  42. data/sig/bidi2pdf/bidi/commands/browsing_context_print.rbs +10 -5
  43. data/sig/bidi2pdf/bidi/commands/cancel_auth.rbs +8 -2
  44. data/sig/bidi2pdf/bidi/commands/capture_screenshot.rbs +31 -0
  45. data/sig/bidi2pdf/bidi/commands/cdp_get_session.rbs +17 -0
  46. data/sig/bidi2pdf/bidi/commands/create_window.rbs +4 -0
  47. data/sig/bidi2pdf/bidi/commands/get_user_contexts.rbs +2 -0
  48. data/sig/bidi2pdf/bidi/commands/network_continue.rbs +4 -0
  49. data/sig/bidi2pdf/bidi/commands/page_print.rbs +28 -0
  50. data/sig/bidi2pdf/bidi/commands/print_parameters_validator.rbs +3 -0
  51. data/sig/bidi2pdf/bidi/commands/provide_credentials.rbs +12 -6
  52. data/sig/bidi2pdf/bidi/commands/script_evaluate.rbs +4 -0
  53. data/sig/bidi2pdf/bidi/commands/session_end.rbs +2 -0
  54. data/sig/bidi2pdf/bidi/commands/session_status.rbs +3 -1
  55. data/sig/bidi2pdf/bidi/commands/session_subscribe.rbs +4 -0
  56. data/sig/bidi2pdf/bidi/commands/set_tab_cookie.rbs +51 -23
  57. data/sig/bidi2pdf/bidi/commands/set_usercontext_cookie.rbs +17 -19
  58. data/sig/bidi2pdf/bidi/commands/set_viewport.rbs +31 -0
  59. data/sig/bidi2pdf/bidi/connection_manager.rbs +2 -1
  60. data/sig/bidi2pdf/bidi/event_manager.rbs +14 -19
  61. data/sig/bidi2pdf/bidi/interceptor.rbs +5 -0
  62. data/sig/bidi2pdf/bidi/js_logger_helper.rbs +9 -0
  63. data/sig/bidi2pdf/bidi/logger_events.rbs +21 -0
  64. data/sig/bidi2pdf/bidi/navigation_failed_events.rbs +17 -0
  65. data/sig/bidi2pdf/bidi/network_event.rbs +54 -46
  66. data/sig/bidi2pdf/bidi/network_event_formatters/network_event_console_formatter.rbs +63 -0
  67. data/sig/bidi2pdf/bidi/network_event_formatters/network_event_formatter_utils.rbs +15 -0
  68. data/sig/bidi2pdf/bidi/network_event_formatters/network_event_html_formatter.rbs +18 -0
  69. data/sig/bidi2pdf/bidi/network_event_formatters.rbs +6 -0
  70. data/sig/bidi2pdf/bidi/network_events.rbs +14 -39
  71. data/sig/bidi2pdf/bidi/session.rbs +144 -31
  72. data/sig/bidi2pdf/bidi/user_context.rbs +64 -45
  73. data/sig/bidi2pdf/bidi/web_socket_dispatcher.rbs +22 -30
  74. data/sig/bidi2pdf/chromedriver_manager.rbs +57 -22
  75. data/sig/bidi2pdf/cli.rbs +22 -2
  76. data/sig/bidi2pdf/dsl.rbs +34 -0
  77. data/sig/bidi2pdf/launcher.rbs +39 -1
  78. data/sig/bidi2pdf/notifications/event.rbs +40 -0
  79. data/sig/bidi2pdf/notifications/instrumenter.rbs +21 -0
  80. data/sig/bidi2pdf/notifications/logging_subscriber.rbs +41 -0
  81. data/sig/bidi2pdf/notifications.rbs +24 -0
  82. data/sig/bidi2pdf/process_tree.rbs +2 -2
  83. data/sig/bidi2pdf/session_runner.rbs +41 -1
  84. data/sig/bidi2pdf/test_helpers/configuration.rbs +51 -0
  85. data/sig/bidi2pdf/test_helpers/images/extractor.rbs +43 -0
  86. data/sig/bidi2pdf/test_helpers/images/image_similarity_checker.rbs +35 -0
  87. data/sig/bidi2pdf/test_helpers/images/tiff_helper.rbs +70 -0
  88. data/sig/bidi2pdf/test_helpers/images.rbs +0 -0
  89. data/sig/bidi2pdf/test_helpers/matchers/contains_pdf_image.rbs +0 -0
  90. data/sig/bidi2pdf/test_helpers/matchers/contains_pdf_text.rbs +0 -0
  91. data/sig/bidi2pdf/test_helpers/matchers/have_pdf_page_count.rbs +0 -0
  92. data/sig/bidi2pdf/test_helpers/matchers/match_pdf_text.rbs +0 -0
  93. data/sig/bidi2pdf/test_helpers/pdf_file_helper.rbs +23 -0
  94. data/sig/bidi2pdf/test_helpers/pdf_reader_utils.rbs +49 -0
  95. data/sig/bidi2pdf/test_helpers/pdf_text_sanitizer.rbs +38 -0
  96. data/sig/bidi2pdf/test_helpers/spec_paths_helper.rbs +35 -0
  97. data/sig/bidi2pdf/test_helpers/testcontainers/chromedriver_container.rbs +43 -0
  98. data/sig/bidi2pdf/test_helpers/testcontainers/chromedriver_test_helper.rbs +45 -0
  99. data/sig/bidi2pdf/test_helpers/testcontainers/container_endpoint.rbs +25 -0
  100. data/sig/bidi2pdf/test_helpers/testcontainers/shared_docker_network.rbs +3 -0
  101. data/sig/bidi2pdf/test_helpers/testcontainers/testcontainers_refinement.rbs +47 -0
  102. data/sig/bidi2pdf/test_helpers/testcontainers.rbs +6 -0
  103. data/sig/bidi2pdf/test_helpers.rbs +0 -0
  104. data/sig/bidi2pdf/verbose_logger.rbs +37 -0
  105. data/sig/bidi2pdf/version.rbs +3 -0
  106. data/sig/bidi2pdf.rbs +112 -2
  107. data/tasks/generate_rbs.rake +11 -11
  108. metadata +59 -7
  109. data/sig/bidi2pdf/utils.rbs +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71faf59892553b22a889f4502396d7c1670269b6223ce6aadf855a2651102e5d
4
- data.tar.gz: 4af6722525e182f381430750e28ced8516fd6e3febbdd007560e4b5bf1e177a9
3
+ metadata.gz: 57c77db5483e79f4cfb2314b792fa10eecf910ee319319c8e838cce0c14dc390
4
+ data.tar.gz: '029c81071a16b9c8b276afda6e162811552c095dac134d3f564497f1847840a0'
5
5
  SHA512:
6
- metadata.gz: 18ce08f28f70148e88c09f26238d4b840dacb75318cb36ef14b6d8d1e12d9fd475d734bf495ea30eb7bd4d41684b9da15d008b9d8f73f3e64a6881a8b09cdd9d
7
- data.tar.gz: 62f78f1130380da20ffd72f5450e87db66bb7f21ae2c947d8f6b1ab1a3bc738690801c2b42117789c89d9a4566f1343f9e3d7b72fe5e5cd55c9e1f1e66d32c8c
6
+ metadata.gz: 2eabb11610a39980898f8f66109cc61561e47058815283d7f3db711a63ddf7e88b6bb57829dc2e39cb4f0c29811086986ff27b09c3655c8b4c1281dbfa91e1c8
7
+ data.tar.gz: e7d8d0099c195d503593cd45fb7a62d1f94b67fd05bba6ef64181e6d239fed23fa0a9f5f934430e1b822389ce30b294f8805f0947f85dbbdfced6e4c71a5d95b
@@ -0,0 +1,53 @@
1
+ FROM mcr.microsoft.com/devcontainers/ruby:2-3.4-trixie
2
+
3
+ # Install Rails
4
+ RUN su vscode -c "/usr/local/rvm/bin/rvm fix-permissions"
5
+
6
+ RUN rm -f /etc/apt/sources.list.d/yarn.list \
7
+ && find /etc/apt/sources.list.d -type f \
8
+ -exec sed -i '\|https://dl.yarnpkg.com/debian|d' {} + \
9
+ && apt-get update \
10
+ && apt-get install -y --no-install-recommends \
11
+ build-essential \
12
+ git \
13
+ nodejs \
14
+ ca-certificates \
15
+ curl \
16
+ openssh-server \
17
+ procps \
18
+ util-linux \
19
+ socat \
20
+ libjemalloc2 libvips sqlite3 libyaml-dev chromium-driver \
21
+ && rm -rf /var/lib/apt/lists/*
22
+
23
+ # Default value to allow debug server to serve content over GitHub Codespace's port forwarding service
24
+ # The value is a comma-separated list of allowed domains
25
+ ENV RAILS_DEVELOPMENT_HOSTS=".githubpreview.dev,.preview.app.github.dev,.app.github.dev"
26
+
27
+ # Install rbenv and ruby-build as vscode.
28
+ RUN su vscode -c 'curl -fsSL https://rbenv.org/install.sh | bash'
29
+
30
+ # Install and select Ruby 3.4.8.
31
+ RUN su vscode -c '\
32
+ export RBENV_ROOT="$HOME/.rbenv" && \
33
+ export PATH="$RBENV_ROOT/bin:$PATH" && \
34
+ eval "$(rbenv init - bash)" && \
35
+ rbenv install 3.4.8 && \
36
+ rbenv global 3.4.8 && \
37
+ rbenv rehash && \
38
+ ruby --version \
39
+ '
40
+
41
+ RUN mkdir -p /home/vscode/.webdrivers \
42
+ && chown -R vscode:vscode /home/vscode/.webdrivers \
43
+ && ln -sfn /usr/bin/chromedriver /home/vscode/.webdrivers/chromedriver \
44
+
45
+ # [Optional] Uncomment this section to install additional OS packages.
46
+ # RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
47
+ # && apt-get -y install --no-install-recommends <your-package-list-here>
48
+
49
+ # [Optional] Uncomment this line to install additional gems.
50
+ # RUN su vscode -c "gem install <your-gem-names-here>"
51
+
52
+ # [Optional] Uncomment this line to install global node packages.
53
+ # RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1
@@ -0,0 +1,51 @@
1
+ // For format details, see https://aka.ms/devcontainer.json. For config options, see the
2
+ // README at: https://github.com/devcontainers/templates/tree/main/src/ruby-rails-postgres
3
+ {
4
+ "name": "Ruby-Bidi2PDF",
5
+ "dockerComposeFile": "docker-compose.yml",
6
+ "service": "app",
7
+ "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}",
8
+ "runServices": [
9
+ "app",
10
+ "remote-chrome-debug"
11
+ ],
12
+ // Features to add to the dev container. More info: https://containers.dev/features.
13
+ // "features": {},
14
+ "features": {
15
+ "ghcr.io/devcontainers/features/github-cli:1": {},
16
+ "ghcr.io/rails/devcontainer/features/activestorage": {},
17
+ "ghcr.io/devcontainers/features/docker-in-docker:4": {
18
+ "version": "latest",
19
+ "moby": false
20
+ }
21
+ },
22
+ // Use 'forwardPorts' to make a list of ports inside the container available locally.
23
+ // This can be used to network with other containers or the host.
24
+ // "forwardPorts": [3000, 5432],
25
+
26
+ // Use 'postCreateCommand' to run commands after the container is created.
27
+ // "postCreateCommand": "bundle install && rake db:setup",
28
+
29
+ // Configure tool-specific properties.
30
+ "customizations": {
31
+ "jetbrains": {
32
+ "settings": {
33
+ "com.intellij:app:HttpConfigurable.use_proxy_pac": true,
34
+ "com.intellij:app:BaseRefactoringSettings.safe_delete_when_delete": false,
35
+ "com.intellij:app:BaseRefactoringSettings.rename_search_in_comments_for_file": false,
36
+ "com.intellij:app:BaseRefactoringSettings.rename_search_for_references_for_file": false,
37
+ "com.intellij:app:BaseRefactoringSettings.rename_search_for_references_for_directory": false,
38
+ "com.intellij:app:BaseRefactoringSettings.move_search_for_references_for_file": false
39
+ },
40
+ "backend": "RubyMine"
41
+ }
42
+ },
43
+ // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
44
+ // "remoteUser": "root",
45
+
46
+ "containerEnv": {
47
+ "IN_DEV_CONTAINER": "true",
48
+ "DISABLE_CHROME_SANDBOX": "true",
49
+ "REMOTE_BROWSER_URL": "http://remote-chrome:3000/session"
50
+ }
51
+ }
@@ -0,0 +1,33 @@
1
+ version: '3'
2
+
3
+ services:
4
+ app:
5
+ build:
6
+ context: ..
7
+ dockerfile: .devcontainer/Dockerfile
8
+
9
+ # volumes:
10
+ # - ../..:/workspaces:cached
11
+
12
+ # Overrides default command so things don't shut down after the process ends.
13
+ command: sleep infinity
14
+
15
+ # Runs app on the same network as the database container, allows "forwardPorts" in devcontainer.json function.
16
+ network_mode: service:remote-chrome-debug
17
+
18
+ # volumes:
19
+ # - /var/run/docker.sock:/var/run/docker.sock
20
+
21
+ # Use "forwardPorts" in **devcontainer.json** to forward an app port locally.
22
+ # (Adding the "ports" property to this file will not forward from a Codespace.)
23
+
24
+ remote-chrome-debug:
25
+ image: dieters877565/chromedriver:latest
26
+ environment:
27
+ ENABLE_XVFB: true
28
+ ENABLE_VNC: true
29
+ VNC_PASS: ${REMOTE_CHROME_VNC_PASS:-supersecret}
30
+ cap_add:
31
+ - SYS_ADMIN
32
+ ports:
33
+ - "127.0.0.1:${REMOTE_CHROME_VNC_PORT:-5900}:5900"
data/.ruby-gemset CHANGED
@@ -1 +1 @@
1
- bidi2pdf
1
+ -global
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-3.4.3
1
+ ruby-3.4.8
data/CHANGELOG.md CHANGED
@@ -8,10 +8,49 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
- [unreleased]: https://github.com/dieter-medium/bidi2pdf/compare/v0.1.12..HEAD
11
+ [unreleased]: https://github.com/dieter-medium/bidi2pdf/compare/v0.1.14..HEAD
12
12
 
13
13
  <!-- generated by git-cliff end -->
14
14
 
15
+ ## [0.1.14] - 2026-09-19
16
+
17
+ ### 🐛 Fixed
18
+
19
+ - Update Dockerfile to use Ruby 3.4-slim
20
+
21
+ ### 🔄 Changed
22
+
23
+ - Merge pull request #120 from dieter-medium/chore-fix-sig
24
+ - Merge pull request #119 from dieter-medium/chore-update-gems
25
+ - Merge pull request #118 from dieter-medium/enhance-test-helpers
26
+ - Merge pull request #103 from dieter-medium/enhance-test-helpers
27
+ - Merge pull request #95 from dieter-medium/dependabot/bundler/bundler-b0eb7e8c29
28
+ - Merge pull request #82 from dieter-medium/dependabot/bundler/main/rake-13.4.2
29
+ - Merge pull request #96 from dieter-medium/dependabot/bundler/main/rubocop-1.88.2
30
+ - Merge pull request #100 from dieter-medium/dependabot/bundler/main/concurrent-ruby-1.3.8
31
+ - Merge pull request #101 from dieter-medium/dependabot/bundler/main/rbs-4.1.0
32
+ - Merge pull request #87 from dieter-medium/dependabot/bundler/main/rubocop-rspec-3.10.2
33
+ - Merge pull request #92 from dieter-medium/dependabot/bundler/main/rubocop-1.88.0
34
+ - Merge pull request #93 from dieter-medium/dependabot/bundler/bundler-0f363c4924
35
+ - Merge pull request #79 from dieter-medium/fix-slim-image
36
+
37
+ ### 🔧 Build
38
+
39
+ - Bump excon in the bundler group across 1 directory
40
+ - Bump rake from 13.3.1 to 13.4.2
41
+ - Bump rubocop from 1.88.0 to 1.88.2
42
+ - Bump concurrent-ruby from 1.3.7 to 1.3.8
43
+ - Bump rbs from 4.0.2 to 4.1.0
44
+ - Bump rubocop-rspec from 3.9.0 to 3.10.2
45
+ - Bump rubocop from 1.86.0 to 1.88.0
46
+ - Bump concurrent-ruby
47
+
48
+ ### 🚀 Added
49
+
50
+ - Add new RBS type definitions for Bidi2pdf
51
+ - Add screenshot and viewport management
52
+ - Add options for Chrome sandbox and flags wihtin the cli
53
+
15
54
  ## [0.1.13] - 2026-03-28
16
55
 
17
56
  ### 🔄 Changed
@@ -368,11 +407,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
368
407
 
369
408
  ### 🔄 Released
370
409
 
371
- - [unreleased](https://github.com/dieter-medium/bidi2pdf/compare/v0.1.13..HEAD)
372
- - [0.1.13](https://github.com/dieter-medium/bidi2pdf/compare/v0.1.12..V0.1.13)
373
- - [0.1.12](https://github.com/dieter-medium/bidi2pdf/compare/v0.1.11..V0.1.12)
374
- - [0.1.11](https://github.com/dieter-medium/bidi2pdf/compare/v0.1.10..V0.1.11)
375
- - [0.1.10](https://github.com/dieter-medium/bidi2pdf/compare/v0.1.9..V0.1.10)
410
+ - [unreleased](https://github.com/dieter-medium/bidi2pdf/compare/v0.1.14..HEAD)
411
+ - [0.1.14](https://github.com/dieter-medium/bidi2pdf/compare/v0.1.13..v0.1.14)
412
+ - [0.1.13](https://github.com/dieter-medium/bidi2pdf/compare/v0.1.12..v0.1.13)
413
+ - [0.1.12](https://github.com/dieter-medium/bidi2pdf/compare/v0.1.11..v0.1.12)
414
+ - [0.1.11](https://github.com/dieter-medium/bidi2pdf/compare/v0.1.10..v0.1.11)
415
+ - [0.1.10](https://github.com/dieter-medium/bidi2pdf/compare/v0.1.9..v0.1.10)
376
416
  - [0.1.9](https://github.com/dieter-medium/bidi2pdf/compare/v0.1.8..v0.1.9)
377
417
  - [0.1.8](https://github.com/dieter-medium/bidi2pdf/compare/v0.1.7..v0.1.8)
378
418
  - [0.1.7](https://github.com/dieter-medium/bidi2pdf/compare/v0.1.6..v0.1.7)
data/README.md CHANGED
@@ -390,6 +390,18 @@ This also provides the helper methods:
390
390
  With the environment variable `DISABLE_CHROME_SANDBOX` set to `true`, the container will run Chrome without
391
391
  the sandbox. This is useful for CI environments where the sandbox may cause issues.
392
392
 
393
+ Container URLs (`session_url` and similar) are built from the Docker host's address plus the container's
394
+ mapped port. That address is resolved by the `testcontainers` gem — which already handles a `tcp:`/`ssh:`
395
+ `DOCKER_HOST`, a native local daemon, and a sibling container reaching the daemon over the bridge gateway —
396
+ falling back to `"localhost"` only if the gem can't resolve a host at all (a known gap in
397
+ `testcontainers-core` 0.2.0 when the test process itself runs in a container on a custom network).
398
+
399
+ To override the Docker host address explicitly, set `TC_HOST` (e.g. `TC_HOST=localhost` for a test process
400
+ running in a container that shares the Docker daemon's network namespace — true docker-in-docker). `TC_HOST`
401
+ is a single global setting for where the daemon's published ports are reachable; it is not the name, URL, or
402
+ IP of an individual container. To reach one container *from another* container, join the shared network and
403
+ address it by alias instead (see `nginx_url(use_alias: true)` in the spec helpers).
404
+
393
405
  #### Example
394
406
 
395
407
  ```ruby
data/docker/Dockerfile CHANGED
@@ -5,7 +5,7 @@ ENV DEBIAN_FRONTEND=noninteractive
5
5
  # Install dependencies
6
6
  RUN apt-get update && apt-get upgrade -y &&\
7
7
  apt-get install -y --no-install-recommends\
8
- chromium chromium-driver\
8
+ chromium chromium-driver chromium-sandbox \
9
9
  libglib2.0-0 \
10
10
  libnss3 \
11
11
  libxss1 \
@@ -1,4 +1,4 @@
1
- FROM ruby:3.3-slim AS builder
1
+ FROM ruby:3.4-slim AS builder
2
2
 
3
3
  ENV DEBIAN_FRONTEND=noninteractive
4
4
 
@@ -31,7 +31,7 @@ RUN gem install ./bidi2pdf-*.gem
31
31
 
32
32
  # Stage 2
33
33
 
34
- FROM ruby:3.3-slim
34
+ FROM ruby:3.4-slim
35
35
 
36
36
  ENV DEBIAN_FRONTEND=noninteractive
37
37