From 2440e6d3caf19ab93a96dfce4920c0df48c63625 Mon Sep 17 00:00:00 2001 From: Bassem Mawhoob Date: Wed, 29 Oct 2025 09:47:47 +0300 Subject: [PATCH] Add support for Rails 8.1 Fixes #6 --- .github/workflows/build.yml | 6 +++++- lib/tableless/connection.rb | 1 - lib/tableless/connection_adapters/dummy_adapter.rb | 4 ++++ lib/tableless/connection_adapters/null_pool.rb | 9 +++++++++ tableless.gemspec | 2 +- test/gemfiles/ar8_1.gemfile | 8 ++++++++ 6 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 lib/tableless/connection_adapters/null_pool.rb create mode 100644 test/gemfiles/ar8_1.gemfile diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a307a90..1cdca9a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,12 +20,16 @@ jobs: matrix: os: [ubuntu-latest] ruby: [2.7, 3.1, 3.4] - gemfile: [ar6, ar7, ar8] + gemfile: [ar6, ar7, ar8, ar8_1] exclude: - ruby: 2.7 gemfile: ar8 + - ruby: 2.7 + gemfile: ar8_1 - ruby: 3.1 gemfile: ar8 + - ruby: 3.1 + gemfile: ar8_1 - ruby: 3.4 gemfile: ar6 runs-on: ${{ matrix.os }} diff --git a/lib/tableless/connection.rb b/lib/tableless/connection.rb index 5baa858..2e61071 100644 --- a/lib/tableless/connection.rb +++ b/lib/tableless/connection.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -require 'tableless/connection_adapters/schema_cache' require 'tableless/connection_adapters/dummy_adapter' module Tableless diff --git a/lib/tableless/connection_adapters/dummy_adapter.rb b/lib/tableless/connection_adapters/dummy_adapter.rb index c0fd788..a7538e7 100644 --- a/lib/tableless/connection_adapters/dummy_adapter.rb +++ b/lib/tableless/connection_adapters/dummy_adapter.rb @@ -1,5 +1,8 @@ # frozen_string_literal: true +require 'tableless/connection_adapters/schema_cache' +require 'tableless/connection_adapters/null_pool' + module Tableless class DummyAdapter < ActiveRecord::ConnectionAdapters::AbstractAdapter DbConfig = Struct.new(:adapter) @@ -7,6 +10,7 @@ class DummyAdapter < ActiveRecord::ConnectionAdapters::AbstractAdapter def initialize(*) super @schema_cache = Tableless::SchemaCache.new + @pool = Tableless::NullPool.new end def schema_cache diff --git a/lib/tableless/connection_adapters/null_pool.rb b/lib/tableless/connection_adapters/null_pool.rb new file mode 100644 index 0000000..9f12f45 --- /dev/null +++ b/lib/tableless/connection_adapters/null_pool.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +module Tableless + class NullPool < ActiveRecord::ConnectionAdapters::NullPool + def with_pool_transaction_isolation_level(*) + yield self + end + end +end diff --git a/tableless.gemspec b/tableless.gemspec index 6e05f55..589d2c1 100644 --- a/tableless.gemspec +++ b/tableless.gemspec @@ -18,7 +18,7 @@ Gem::Specification.new do |spec| spec.required_ruby_version = '>= 2.6' - spec.add_dependency 'activerecord', '>= 6.0', '< 8.1' + spec.add_dependency 'activerecord', '>= 6.0', '< 8.2' spec.add_development_dependency 'bundler', '~> 2.0' spec.add_development_dependency 'minitest', '~> 5.0' diff --git a/test/gemfiles/ar8_1.gemfile b/test/gemfiles/ar8_1.gemfile new file mode 100644 index 0000000..0090c0c --- /dev/null +++ b/test/gemfiles/ar8_1.gemfile @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +source 'https://rubygems.org' + +gem 'activerecord', '~> 8.1' +gem 'concurrent-ruby', '< 1.3.5' +gem 'minitest' +gem 'rake'