scenic-oracle_adapter 1.3.5 → 1.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: deca022db8759f5e92910b10e1c9174717499054ca3d35f3036cc33ee621163c
4
- data.tar.gz: bc8288c1ca2955e36eaa3005ecd2d46458e1efa7038124c076d2b9dc353aa3cd
3
+ metadata.gz: c60d517a9dc52283f5d2706a11f0a6c9b9107e5963a4c29a7fa0a3028007cd94
4
+ data.tar.gz: 6e8adf1e2bc80e2ebd47cb3d05e441b6edc507163402936cc2c394a3bf2fca08
5
5
  SHA512:
6
- metadata.gz: 530586109add300de30c1752f84ab28f568aa94cc262209a65881c408e3341b79e5f4ebab753b8610adf2c110645602a58442853dc42a67a47787e5e3081ae66
7
- data.tar.gz: f632cc5e34fe412fca3d3dc5255177109bb5e2f2ca71aad84659e1c7ae1dae5dadc600bef3884423803e58d5c1d521f5ed33790e44ac463030a54d7424dd322b
6
+ metadata.gz: 7b2a487534bb336fa2a185ecda1d02e18173ff724416a3fd0d5dfd61d452d51ce9d9e8cfa5163851388799a00a649d98fc24b1980715619e6507fe1428771067
7
+ data.tar.gz: 03ba13f1414657cd3bff98cb2fd295a4ccf4e5813b48a0b11c04d21c3ba8ecdc26791bea1956488ece581461297e09b13c6ec2beb88fa1749ad7fa896e2a2e4b
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.4.0 - June 30, 2025
4
+
5
+ - Use scenic 1.9.0
6
+ - Reduce churn in schema.rb by topologically sorting dumped views
7
+ - Raise SideBySideNotSupportedError when Scenic's side_by_side mode is attempted
8
+
3
9
  ## v1.3.5 - Oct 9, 2024
4
10
 
5
11
  - Silence ActiveRecord output while running specs. Clean green dots! (@eeklund, @dlagerro)
data/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM ghcr.io/cdinger/oracle-ruby:3.3
1
+ FROM ghcr.io/cdinger/oracle-ruby:3.4
2
2
 
3
3
  RUN mkdir /app
4
4
  WORKDIR /app
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
+ gem "activerecord-oracle_enhanced-adapter", ">= 1.5.0"
4
4
 
5
5
  # Specify your gem's dependencies in scenic-oracle_adapter.gemspec
6
6
  gemspec
@@ -1,17 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "rails/railtie"
4
- require "active_record/connection_adapters/oracle_enhanced_adapter"
5
4
 
6
5
  module Scenic
7
6
  module Adapters
8
7
  class Oracle
9
8
  class Railtie < Rails::Railtie
10
9
  ActiveSupport.on_load(:active_record) do
11
- if defined?(ActiveRecord::ConnectionAdapters::OracleEnhancedSchemaDumper)
12
- ActiveRecord::ConnectionAdapters::OracleEnhancedSchemaDumper.prepend Scenic::SchemaDumper
13
- else
14
- ActiveRecord::ConnectionAdapters::OracleEnhanced::SchemaDumper.prepend Scenic::SchemaDumper
10
+ if Scenic::Adapters::Oracle.uses_oracle_enhanced_adapter?
11
+ require "active_record/connection_adapters/oracle_enhanced_adapter"
12
+
13
+ if defined?(ActiveRecord::ConnectionAdapters::OracleEnhancedSchemaDumper)
14
+ ActiveRecord::ConnectionAdapters::OracleEnhancedSchemaDumper.prepend Scenic::SchemaDumper
15
+ else
16
+ ActiveRecord::ConnectionAdapters::OracleEnhanced::SchemaDumper.prepend Scenic::SchemaDumper
17
+ end
18
+ end
19
+ if Scenic::Adapters::Oracle.uses_oracle_adapter?
20
+ require "active_record/connection_adapters/oracle_adapter"
21
+
22
+ ActiveRecord::ConnectionAdapters::Oracle::SchemaDumper.prepend Scenic::SchemaDumper
15
23
  end
16
24
  end
17
25
  end
@@ -9,6 +9,8 @@ require "tsortable_hash"
9
9
  module Scenic
10
10
  module Adapters
11
11
  class Oracle
12
+ class SideBySideNotSupportedError < StandardError; end
13
+
12
14
  def initialize(connectable = ActiveRecord::Base)
13
15
  @connectable = connectable
14
16
  end
@@ -38,10 +40,14 @@ module Scenic
38
40
  execute("create materialized view #{quote_table_name(name)} #{'build deferred' if no_data} as #{trimmed_definition(definition)}")
39
41
  end
40
42
 
41
- def update_materialized_view(name, definition, no_data: false)
42
- IndexReapplication.new(connection: connection).on(name) do
43
- drop_materialized_view(name)
44
- create_materialized_view(name, definition, no_data: no_data)
43
+ def update_materialized_view(name, definition, no_data: false, side_by_side: false)
44
+ if side_by_side
45
+ raise SideBySideNotSupportedError.new("Renaming materialized view is not supported in Oracle")
46
+ else
47
+ IndexReapplication.new(connection: connection).on(name) do
48
+ drop_materialized_view(name)
49
+ create_materialized_view(name, definition, no_data: no_data)
50
+ end
45
51
  end
46
52
  end
47
53
 
@@ -67,6 +73,18 @@ module Scenic
67
73
  delegate :connection, to: :@connectable
68
74
  delegate :select_all, :select_value, :execute, :quote_table_name, to: :connection
69
75
 
76
+ def self.file_exists_in_load_path?(filename)
77
+ $LOAD_PATH.any? { |path| File.exist?(File.join(path, filename)) }
78
+ end
79
+
80
+ def self.uses_oracle_enhanced_adapter?
81
+ file_exists_in_load_path?("active_record/connection_adapters/oracle_enhanced_adapter.rb")
82
+ end
83
+
84
+ def self.uses_oracle_adapter?
85
+ file_exists_in_load_path?("active_record/connection_adapters/oracle_adapter.rb")
86
+ end
87
+
70
88
  private
71
89
 
72
90
  def view_dependencies
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Scenic
4
4
  module OracleAdapter
5
- VERSION = "1.3.5"
5
+ VERSION = "1.4.0"
6
6
  end
7
7
  end
@@ -1,6 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "active_record"
4
+ # Require tsort here before scenic to avoid:
5
+ # uninitialized constant Scenic::Adapters::Postgres::Views::TSortableHash::TSort
6
+ require "tsort"
4
7
  require "scenic"
5
8
  require "scenic/oracle_adapter/version"
6
9
  require "scenic/adapters/oracle"
@@ -22,8 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ["lib"]
24
24
 
25
- spec.add_dependency "scenic", "= 1.8.0"
26
- spec.add_dependency "activerecord-oracle_enhanced-adapter", ">= 1.5.0"
25
+ spec.add_dependency "scenic", "= 1.9.0"
27
26
 
28
27
  spec.add_development_dependency "bundler", "~> 2.0"
29
28
  spec.add_development_dependency "rake", ">= 12.3.3"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scenic-oracle_adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.5
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Dinger
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-10-09 00:00:00.000000000 Z
11
+ date: 2025-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: scenic
@@ -16,28 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 1.8.0
19
+ version: 1.9.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 1.8.0
27
- - !ruby/object:Gem::Dependency
28
- name: activerecord-oracle_enhanced-adapter
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 1.5.0
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: 1.5.0
26
+ version: 1.9.0
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: bundler
43
29
  requirement: !ruby/object:Gem::Requirement