Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
4576b5b
Bump Oracle to Free 23 (23.26.1) and Instant Client to 23.26.1.0.0
yahonda Apr 11, 2026
e8d0016
Fix Oracle 23c compatibility for BOOLEAN type
yahonda Apr 12, 2026
43739b0
Update ORA-00942 test regex for Oracle 23c
yahonda Apr 12, 2026
8c5045d
Add Ruby 3.3, 3.4 and 4.0 to CI test matrix
yahonda Apr 10, 2026
32654f8
Bump Ruby version in RuboCop workflow to 4.0
yahonda Apr 10, 2026
30fc3d0
Add CI workflow for Oracle Database 11g
yahonda Apr 10, 2026
5d0515d
Bump activerecord and oracle_enhanced adapter to 8.0
yahonda Apr 10, 2026
6e5593f
Remove Ruby 2.5-3.1 from CI test matrices
yahonda Apr 12, 2026
ee3a310
Bump RuboCop to latest and autocorrect offenses
yahonda Apr 10, 2026
c55253a
Use sqlplus from PATH instead of ORACLE_HOME/bin
yahonda Apr 10, 2026
c7ead1b
Register oracle_enhanced adapter for ActiveRecord 8.0 in specs
yahonda Apr 10, 2026
7b6cfd7
Enable Ruby warnings in CI test runs
yahonda Apr 10, 2026
4306dd3
Bump actions/checkout to v6
yahonda Apr 12, 2026
962a2b5
Fix ActiveRecord 8.0 default_timezone API
yahonda Apr 12, 2026
e0dedbc
Require "logger" before "active_record" in spec helper
yahonda Apr 12, 2026
c0f1334
Fix frozen string literal warnings
yahonda Apr 10, 2026
160f884
Fix Ruby warnings in specs
yahonda Apr 10, 2026
56a6119
Replace deprecated :mswin, :mingw platforms with :windows
yahonda Apr 10, 2026
f91ffe4
Fix XMLType parameter and return value handling on Oracle 12c+
yahonda Apr 10, 2026
62bd2e3
Use 11g server's v14 timezone file via ORA_TZFILE
yahonda Apr 10, 2026
b857812
Add Rails 5.0-8.0 gemfile matrix running minimum required CRuby
yahonda Apr 11, 2026
8f80fd9
Remove Travis CI configuration
yahonda Apr 11, 2026
f4fe2b3
Remove .codeclimate.yml from gemspec s.files list
yahonda Apr 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 12 additions & 11 deletions .github/workflows/rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,27 @@ jobs:
build:

runs-on: ubuntu-latest
env:
ORACLE_HOME: /opt/oracle/instantclient_23_26
LD_LIBRARY_PATH: /opt/oracle/instantclient_23_26

steps:
- uses: actions/checkout@v4
- name: Set up Ruby 3.1
- uses: actions/checkout@v6
- name: Set up Ruby 4.0
uses: ruby/setup-ruby@v1
with:
ruby-version: "3.1"
- name: Install required package
ruby-version: "4.0"
- name: Create symbolic link for libaio library compatibility
run: |
sudo apt-get install alien
sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1
- name: Download Oracle instant client
run: |
wget -q https://download.oracle.com/otn_software/linux/instantclient/216000/oracle-instantclient-basic-21.6.0.0.0-1.x86_64.rpm
wget -q https://download.oracle.com/otn_software/linux/instantclient/216000/oracle-instantclient-sqlplus-21.6.0.0.0-1.x86_64.rpm
wget -q https://download.oracle.com/otn_software/linux/instantclient/216000/oracle-instantclient-devel-21.6.0.0.0-1.x86_64.rpm
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-basic-linux.x64-23.26.1.0.0.zip
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-sdk-linux.x64-23.26.1.0.0.zip
- name: Install Oracle instant client
run: |
sudo alien -i oracle-instantclient-basic-21.6.0.0.0-1.x86_64.rpm
sudo alien -i oracle-instantclient-sqlplus-21.6.0.0.0-1.x86_64.rpm
sudo alien -i oracle-instantclient-devel-21.6.0.0.0-1.x86_64.rpm
sudo unzip -q instantclient-basic-linux.x64-23.26.1.0.0.zip -d /opt/oracle/
sudo unzip -qo instantclient-sdk-linux.x64-23.26.1.0.0.zip -d /opt/oracle/

- name: Build and run RuboCop
run: |
Expand Down
46 changes: 22 additions & 24 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,35 +7,32 @@ on:
jobs:
build:

runs-on: ubuntu-20.04
runs-on: ubuntu-latest
continue-on-error: true
strategy:
matrix:
ruby: [
'4.0',
'3.4',
'3.3',
'3.2',
'3.1',
'3.0',
'2.7',
'2.6',
'2.5',
ruby-head,
ruby-debug,
truffleruby,
truffleruby-head
]
env:
ORACLE_HOME: /usr/lib/oracle/21/client64
LD_LIBRARY_PATH: /usr/lib/oracle/21/client64/lib
ORACLE_HOME: /opt/oracle/instantclient_23_26
LD_LIBRARY_PATH: /opt/oracle/instantclient_23_26
NLS_LANG: AMERICAN_AMERICA.AL32UTF8
TNS_ADMIN: ./ci/network/admin
DATABASE_NAME: XEPDB1
DATABASE_NAME: FREEPDB1
TZ: Europe/Riga
DATABASE_SYS_PASSWORD: Oracle18
DATABASE_VERSION: 21.3.0.0

Comment thread
yahonda marked this conversation as resolved.
services:
oracle:
image: gvenzl/oracle-xe:latest
image: gvenzl/oracle-free:latest
ports:
- 1521:1521
env:
Expand All @@ -48,27 +45,28 @@ jobs:
--health-retries 10

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- name: Install required package
- name: Create symbolic link for libaio library compatibility
run: |
sudo apt-get install alien
- name: Download Oracle client
sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1
- name: Download Oracle instant client
run: |
Comment thread
yahonda marked this conversation as resolved.
wget -q https://download.oracle.com/otn_software/linux/instantclient/2110000/oracle-instantclient-basic-21.10.0.0.0-1.x86_64.rpm
wget -q https://download.oracle.com/otn_software/linux/instantclient/2110000/oracle-instantclient-sqlplus-21.10.0.0.0-1.x86_64.rpm
wget -q https://download.oracle.com/otn_software/linux/instantclient/2110000/oracle-instantclient-devel-21.10.0.0.0-1.x86_64.rpm
- name: Install Oracle client
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-basic-linux.x64-23.26.1.0.0.zip
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-sdk-linux.x64-23.26.1.0.0.zip
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-sqlplus-linux.x64-23.26.1.0.0.zip
Comment thread
yahonda marked this conversation as resolved.
Comment thread
yahonda marked this conversation as resolved.
- name: Install Oracle instant client
run: |
sudo alien -i oracle-instantclient-basic-21.10.0.0.0-1.x86_64.rpm
sudo alien -i oracle-instantclient-sqlplus-21.10.0.0.0-1.x86_64.rpm
sudo alien -i oracle-instantclient-devel-21.10.0.0.0-1.x86_64.rpm
sudo unzip -q instantclient-basic-linux.x64-23.26.1.0.0.zip -d /opt/oracle/
sudo unzip -qo instantclient-sdk-linux.x64-23.26.1.0.0.zip -d /opt/oracle/
sudo unzip -qo instantclient-sqlplus-linux.x64-23.26.1.0.0.zip -d /opt/oracle/
echo "/opt/oracle/instantclient_23_26" >> $GITHUB_PATH
- name: Install JDBC Driver
run: |
wget -q https://download.oracle.com/otn-pub/otn_software/jdbc/211/ojdbc11.jar -O ./lib/ojdbc11.jar
wget -q https://download.oracle.com/otn-pub/otn_software/jdbc/233/ojdbc11.jar -O ./lib/ojdbc11.jar
- name: Create database user
run: |
./ci/setup_accounts.sh
Expand All @@ -81,4 +79,4 @@ jobs:
bundle install --jobs 4 --retry 3
- name: Run RSpec
run: |
bundle exec rspec
RUBYOPT=-w bundle exec rspec
96 changes: 96 additions & 0 deletions .github/workflows/test_11g.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
name: test_11g

on:
push:
pull_request:

jobs:
build:

runs-on: ubuntu-latest
continue-on-error: true
strategy:
matrix:
ruby: [
'4.0',
'3.4',
'3.3',
'3.2',
ruby-head,
ruby-debug,
truffleruby,
truffleruby-head
]
env:
ORACLE_HOME: /opt/oracle/instantclient_21_15
LD_LIBRARY_PATH: /opt/oracle/instantclient_21_15
NLS_LANG: AMERICAN_AMERICA.AL32UTF8
TNS_ADMIN: ./ci/network/admin
DATABASE_NAME: XE
TZ: Europe/Riga
DATABASE_SYS_PASSWORD: Oracle18

services:
oracle:
image: gvenzl/oracle-xe:11
ports:
- 1521:1521
env:
TZ: Europe/Riga
ORACLE_PASSWORD: Oracle18
options: >-
--health-cmd healthcheck.sh
--health-interval 10s
--health-timeout 5s
--health-retries 10

steps:
- uses: actions/checkout@v6
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- name: Create symbolic link for libaio library compatibility
run: |
sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1
- name: Download Oracle instant client
run: |
wget -q https://download.oracle.com/otn_software/linux/instantclient/2115000/instantclient-basic-linux.x64-21.15.0.0.0dbru.zip
wget -q https://download.oracle.com/otn_software/linux/instantclient/2115000/instantclient-sqlplus-linux.x64-21.15.0.0.0dbru.zip
wget -q https://download.oracle.com/otn_software/linux/instantclient/2115000/instantclient-sdk-linux.x64-21.15.0.0.0dbru.zip
- name: Install Oracle instant client
run: |
sudo mkdir -p /opt/oracle/
sudo unzip -q instantclient-basic-linux.x64-21.15.0.0.0dbru.zip -d /opt/oracle
sudo unzip -qo instantclient-sqlplus-linux.x64-21.15.0.0.0dbru.zip -d /opt/oracle
sudo unzip -qo instantclient-sdk-linux.x64-21.15.0.0.0dbru.zip -d /opt/oracle
echo "/opt/oracle/instantclient_21_15" >> $GITHUB_PATH
- name: Install JDBC Driver
run: |
wget -q https://download.oracle.com/otn-pub/otn_software/jdbc/233/ojdbc11.jar -O ./lib/ojdbc11.jar
- name: Configure ORA_TZFILE to match Oracle 11g server
run: |
# Oracle 11g XE uses timezone file v14; Instant Client 21.15 embeds v35.
# This mismatch causes ORA-01805 when ruby-oci8 fetches DATE/TIMESTAMP
# values. Copy the v14 files from the 11g container and point the
# Instant Client at them via ORA_TZFILE.
ORACLE_CONTAINER=$(docker ps --filter "ancestor=gvenzl/oracle-xe:11" -q)
sudo mkdir -p /opt/oracle/instantclient_21_15/oracore/zoneinfo
docker cp "$ORACLE_CONTAINER":/u01/app/oracle/product/11.2.0/xe/oracore/zoneinfo/timezlrg_14.dat /tmp/timezlrg_14.dat
docker cp "$ORACLE_CONTAINER":/u01/app/oracle/product/11.2.0/xe/oracore/zoneinfo/timezone_14.dat /tmp/timezone_14.dat
sudo mv /tmp/timezlrg_14.dat /opt/oracle/instantclient_21_15/oracore/zoneinfo/
sudo mv /tmp/timezone_14.dat /opt/oracle/instantclient_21_15/oracore/zoneinfo/
echo "ORA_TZFILE=timezlrg_14.dat" >> $GITHUB_ENV
- name: Create database user
run: |
./ci/setup_accounts.sh
- name: Disable ActiveRecord for TruffleRuby
run: |
echo "NO_ACTIVERECORD=true" >> $GITHUB_ENV
if: "contains(matrix.ruby, 'truffleruby')"
- name: Bundle install
run: |
bundle install --jobs 4 --retry 3
- name: Run RSpec
run: |
RUBYOPT=-w bundle exec rspec
92 changes: 92 additions & 0 deletions .github/workflows/test_gemfiles.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: test_gemfiles

on:
push:
pull_request:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:

runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- gemfile: gemfiles/Gemfile.activerecord-5.0
ruby: '2.4'
- gemfile: gemfiles/Gemfile.activerecord-5.1
ruby: '2.4'
- gemfile: gemfiles/Gemfile.activerecord-5.2
ruby: '2.4'
- gemfile: gemfiles/Gemfile.activerecord-6.0
ruby: '2.5'
- gemfile: gemfiles/Gemfile.activerecord-6.1
ruby: '2.5'
- gemfile: gemfiles/Gemfile.activerecord-7.0
ruby: '2.7'
- gemfile: gemfiles/Gemfile.activerecord-7.1
ruby: '2.7'
- gemfile: gemfiles/Gemfile.activerecord-7.2
ruby: '3.1'
Comment thread
yahonda marked this conversation as resolved.
- gemfile: gemfiles/Gemfile.activerecord-8.0
ruby: '3.2'
env:
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
ORACLE_HOME: /opt/oracle/instantclient_23_26
LD_LIBRARY_PATH: /opt/oracle/instantclient_23_26
NLS_LANG: AMERICAN_AMERICA.AL32UTF8
TNS_ADMIN: ./ci/network/admin
DATABASE_NAME: FREEPDB1
TZ: Europe/Riga
DATABASE_SYS_PASSWORD: Oracle18

services:
oracle:
image: gvenzl/oracle-free:latest
ports:
- 1521:1521
env:
TZ: Europe/Riga
ORACLE_PASSWORD: Oracle18
options: >-
--health-cmd healthcheck.sh
--health-interval 10s
--health-timeout 5s
--health-retries 10

steps:
- uses: actions/checkout@v6
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
- name: Create symbolic link for libaio library compatibility
run: |
sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1
- name: Download Oracle instant client
run: |
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-basic-linux.x64-23.26.1.0.0.zip
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-sdk-linux.x64-23.26.1.0.0.zip
wget -q https://download.oracle.com/otn_software/linux/instantclient/2326100/instantclient-sqlplus-linux.x64-23.26.1.0.0.zip
- name: Install Oracle instant client
run: |
sudo unzip -q instantclient-basic-linux.x64-23.26.1.0.0.zip -d /opt/oracle/
sudo unzip -qo instantclient-sdk-linux.x64-23.26.1.0.0.zip -d /opt/oracle/
sudo unzip -qo instantclient-sqlplus-linux.x64-23.26.1.0.0.zip -d /opt/oracle/
echo "/opt/oracle/instantclient_23_26" >> $GITHUB_PATH
- name: Install JDBC Driver
run: |
wget -q https://download.oracle.com/otn-pub/otn_software/jdbc/233/ojdbc11.jar -O ./lib/ojdbc11.jar
- name: Create database user
run: |
./ci/setup_accounts.sh
- name: Bundle install
run: |
bundle install --jobs 4 --retry 3
- name: Run RSpec
run: |
RUBYOPT=-w bundle exec rspec
12 changes: 6 additions & 6 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# rubocop 0.51.0 requires Ruby 2.1
# We should not use cops only available for Ruby 2.1 or later
# since ruby-plsql itself supports Ruby 1.9.3
AllCops:
TargetRubyVersion: 2.3
# Match the minimum Ruby exercised by the per-Rails matrix in
# .github/workflows/test_gemfiles.yml (AR 5.0-5.2 jobs run on Ruby 2.4)
# so RuboCop does not permit syntax/stdlib usage that would break
# those supported runtimes.
TargetRubyVersion: 2.4
DisabledByDefault: true

# Prefer &&/|| over and/or.
Expand Down Expand Up @@ -112,7 +113,7 @@ Style/StringLiterals:
EnforcedStyle: double_quotes

# Detect hard tabs, no hard tabs.
Layout/Tab:
Layout/IndentationStyle:
Enabled: true

# Blank lines should not have any spaces.
Expand All @@ -132,7 +133,6 @@ Style/RedundantPercentQ:
Layout/EndAlignment:
Enabled: true
EnforcedStyleAlignWith: variable
AutoCorrect: true

# Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
Lint/RequireParentheses:
Expand Down
Loading