Skip to content

Apply ORA_TZFILE workaround to devcontainer#301

Closed
yahonda wants to merge 1 commit into
rsim:masterfrom
yahonda:apply-ora-tzfile-workaround-to-devcontainer
Closed

Apply ORA_TZFILE workaround to devcontainer#301
yahonda wants to merge 1 commit into
rsim:masterfrom
yahonda:apply-ora-tzfile-workaround-to-devcontainer

Conversation

@yahonda
Copy link
Copy Markdown
Collaborator

@yahonda yahonda commented May 19, 2026

Summary

  • ci: Add ORA_TZFILE workaround to remaining gvenzl/oracle-free workflows #292 applied the ORA-01805 workaround to the remaining gvenzl/oracle-free CI workflows. The same root cause -- the server image shipping a newer timezone-data version than the "latest" Instant Client embeds -- also affects the dev container, which pairs gvenzl/oracle-free:latest with the Instant Client installed via the app Dockerfile and reaches it through ruby-oci8.
  • Mirror the workflow step in .devcontainer/postCreateCommand.sh right after ci/setup_accounts.sh: locate the running Oracle container, copy its timezlrg_*.dat onto the Instant Client's oracore/zoneinfo, and persist ORA_TZFILE via /etc/profile.d/ora_tzfile.sh so every login shell (and the rspec runs they launch) picks it up.
  • Add ghcr.io/devcontainers/features/docker-outside-of-docker alongside the existing Ruby feature in .devcontainer/devcontainer.json to provide the Docker CLI and host socket the workaround needs for docker exec / docker cp.

The lookup is dynamic, so a future gvenzl image bump continues to work without further edits.

Test plan

  • Rebuild the dev container ("Dev Containers: Rebuild Container") and confirm postCreateCommand.sh finishes with Dev container setup complete. and a non-empty ORA_TZFILE line in /etc/profile.d/ora_tzfile.sh.
  • Open a fresh terminal in the rebuilt container and verify echo \$ORA_TZFILE prints the copied timezlrg_*.dat under \$ORACLE_HOME/oracore/zoneinfo, and that the file exists.
  • Run the spec suite (per the project's documented rspec command) and confirm DATE/TIMESTAMP specs pass without ORA-01805.

🤖 Generated with Claude Code

rsim#292 added the ORA-01805 workaround to the remaining `gvenzl/oracle-free`
CI workflows. The same root cause -- the server image shipping a newer
timezone-data version than the "latest" Instant Client embeds -- affects
the dev container, which combines `gvenzl/oracle-free:latest` (Oracle
service) with the Instant Client installed via the app `Dockerfile` and
talks to it through ruby-oci8.

Mirror the workflow step in `postCreateCommand.sh` immediately after
`ci/setup_accounts.sh`: locate the running Oracle container, copy its
`timezlrg_*.dat` onto the Instant Client's `oracore/zoneinfo`, and
persist `ORA_TZFILE` via `/etc/profile.d/ora_tzfile.sh` so every login
shell (and the rspec runs they launch) sees the override.

The Docker CLI and the host docker socket needed to drive `docker exec`
/ `docker cp` are provided by the standard
`ghcr.io/devcontainers/features/docker-outside-of-docker` feature, added
alongside the existing Ruby feature in `devcontainer.json`. The lookup
is dynamic, so a future gvenzl image bump continues to work without
further edits.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@yahonda
Copy link
Copy Markdown
Collaborator Author

yahonda commented May 19, 2026

It does not looks like we need this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant