From d1e872947f0498ad9e6b0965a8f3e90c1e822646 Mon Sep 17 00:00:00 2001 From: Geremia Taglialatela Date: Sat, 8 Oct 2022 15:16:54 +0200 Subject: [PATCH] Fix support for dbconsole on Rails edge Ref: - Move dbconsole logic to Active Record connection adapter: rails/rails@4bcb8e4 rails/rails#46093 - Use adapter_class instead of connection_class for adapters: rails/rails@5bb357f rails/rails#46166 --- lib/active_record/connection_adapters/chronomodel_adapter.rb | 3 +++ lib/chrono_model.rb | 2 +- lib/chrono_model/time_machine.rb | 2 +- spec/chrono_model/time_machine/sti_spec.rb | 4 ++-- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/active_record/connection_adapters/chronomodel_adapter.rb b/lib/active_record/connection_adapters/chronomodel_adapter.rb index 265d88f3..60321ad8 100644 --- a/lib/active_record/connection_adapters/chronomodel_adapter.rb +++ b/lib/active_record/connection_adapters/chronomodel_adapter.rb @@ -2,6 +2,9 @@ module ActiveRecord module ConnectionHandling + def chronomodel_adapter_class + ConnectionAdapters::PostgreSQLAdapter + end # Install the new adapter in ActiveRecord. This approach is required because # the PG adapter defines +add_column+ itself, thus making impossible to use diff --git a/lib/chrono_model.rb b/lib/chrono_model.rb index 07f0fa55..73923430 100644 --- a/lib/chrono_model.rb +++ b/lib/chrono_model.rb @@ -77,7 +77,7 @@ def chrono? prepend ChronoModel::Patches::Batches::BatchEnumerator end -if defined?(Rails::DBConsole) +if defined?(Rails::DBConsole) && Rails.version < '7.1' Rails::DBConsole.instance_eval do if Rails.version < '6.1' prepend ChronoModel::Patches::DBConsole::Config diff --git a/lib/chrono_model/time_machine.rb b/lib/chrono_model/time_machine.rb index 7949b250..29dc4568 100644 --- a/lib/chrono_model/time_machine.rb +++ b/lib/chrono_model/time_machine.rb @@ -38,7 +38,7 @@ def subclasses # implemented with recursion of subclasses if Class.method_defined?(:subclasses) def descendants_with_history - subclasses_with_history.concat(subclasses.flat_map(&:descendants)) + subclasses_with_history.concat(subclasses.flat_map(&:descendants_with_history)) end end else diff --git a/spec/chrono_model/time_machine/sti_spec.rb b/spec/chrono_model/time_machine/sti_spec.rb index 6555a189..4b9a4409 100644 --- a/spec/chrono_model/time_machine/sti_spec.rb +++ b/spec/chrono_model/time_machine/sti_spec.rb @@ -33,7 +33,7 @@ class ::Magazine < ::Publication describe '.descendants_with_history' do subject { Element.descendants_with_history.map(&:name) } - it { is_expected.to match_array %w[Element::History Publication Magazine] } + it { is_expected.to match_array %w[Element::History Publication Publication::History Magazine Magazine::History] } end if Element.respond_to?(:direct_descendants) @@ -50,7 +50,7 @@ class ::Magazine < ::Publication end end - if Element.respond_to?(:subclasses) + if Rails.version >= '7.0' describe '.subclasses' do subject { Element.subclasses.map(&:name) }