scenic-oracle_adapter 1.3.4 → 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: 453bc175d2fa922a314a781064fb63a6415dc3be36aa096baa9d52c77f1542ed
4
- data.tar.gz: 3d5ed519bc3ce673c934bc32d310b298c8d525e12fd089abf8a1201674036d4e
3
+ metadata.gz: c60d517a9dc52283f5d2706a11f0a6c9b9107e5963a4c29a7fa0a3028007cd94
4
+ data.tar.gz: 6e8adf1e2bc80e2ebd47cb3d05e441b6edc507163402936cc2c394a3bf2fca08
5
5
  SHA512:
6
- metadata.gz: cb0722b1989112a9b5f48c7fdbd7b303d4fd7baf5b577dc002bcd9d174e795b120715b725ffdd72cc562f7522b09a9eea13cc8e4984dccd53d929bdea2b1b0c4
7
- data.tar.gz: df2366ae4965f197b205f7148ecef307f17695f3c05815b17ee681bf230b53c2bb1edfc7831b854d590022422fbfc42c3ce00e526ff7d14f719ecc8399ae5ce6
6
+ metadata.gz: 7b2a487534bb336fa2a185ecda1d02e18173ff724416a3fd0d5dfd61d452d51ce9d9e8cfa5163851388799a00a649d98fc24b1980715619e6507fe1428771067
7
+ data.tar.gz: 03ba13f1414657cd3bff98cb2fd295a4ccf4e5813b48a0b11c04d21c3ba8ecdc26791bea1956488ece581461297e09b13c6ec2beb88fa1749ad7fa896e2a2e4b
@@ -13,4 +13,4 @@ jobs:
13
13
  steps:
14
14
  - uses: actions/checkout@v2
15
15
  - name: Run tests
16
- run: docker-compose run gem rspec
16
+ run: docker compose run gem rspec
data/CHANGELOG.md ADDED
@@ -0,0 +1,81 @@
1
+ # Changelog
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
+
9
+ ## v1.3.5 - Oct 9, 2024
10
+
11
+ - Silence ActiveRecord output while running specs. Clean green dots! (@eeklund, @dlagerro)
12
+ - Fix growing indentation issue in schema.rb after `schema:dump`/`schema:load` (@eeklund, @dlagerro)
13
+
14
+ ## v1.3.4 - Jul 22, 2024
15
+
16
+ - Fixes a syntax issue in pre-3.1 rubies
17
+ - Fixes SchemaDumper error when all view objects aren't present in Oracle's user_dependencies
18
+ - Reduce git churn in schema.rb by ordering views before they're handed to SchemaDumper
19
+ - Strip newlines and trailing semicolons from view definitions
20
+
21
+ ## v1.3.3 - Jul 18, 2024
22
+
23
+ - Fixes an issue with dependency sorting where mviews will sometimes be classified as a tables in user_dependencies (@whit0694)
24
+
25
+ ## v1.3.2 - Jul 3, 2024
26
+
27
+ - Fixes a bug in the dependency-ordered views logic when Scenic views depend on external objects (@whit0694)
28
+
29
+ ## v1.3.1 - Jul 3, 2024
30
+
31
+ - Ensures views in schema.rb are correctly ordered based on dependencies
32
+
33
+ ## v1.3.0 - Mar 29, 2024
34
+
35
+ - Update to scenic version 1.8.0
36
+ - Adds support for the #populated? model method
37
+
38
+ ## v1.2.2 - Apr 27, 2023
39
+
40
+ - This fixes the botched publishing of 1.2.1 (#14).
41
+ - The 1.2.1 gem file that was published to rubygems.org didn't contain any source code in the tarball. It was yanked and replaced with 1.2.2.
42
+
43
+ ## v1.2.1 - Apr 20, 2023
44
+
45
+ - Fixes a bug where update_view fails on materialized views (#13)
46
+
47
+ ## v1.2.0 - Dec 16, 2022
48
+
49
+ - Update to scenic version 1.7.0
50
+ - Update Oracle docker container to 21 XE for testing and local development
51
+
52
+ ## v1.1.1 - Sep 10, 2021
53
+
54
+ - Fixes issue with schema dumping in pre-1.7.0 versions of activerecord-oracle_enhanced-adapter.
55
+
56
+ ## v1.1.0 - Apr 23, 2021
57
+
58
+ - Added support for unpopulated materialized views (build deferrred) via scenic's no_data option.
59
+ - Move CI from Travis CI to Github Actions.
60
+
61
+ ## v1.0.3 - Apr 22, 2021
62
+
63
+ - Update scenic dependency to 1.5.4 to provide support for Ruby 3
64
+
65
+ ## v1.0.2 - May 11, 2020
66
+
67
+ - Remove ruby-oci as a direct dependency for jruby users (it was moved to a development dependency)
68
+ - Drop ruby 2.4 from the CI matrix. 2.4 is no longer supported.
69
+
70
+ ## v1.0.1 - Apr 7, 2020
71
+
72
+ - Update rake development dependency to address CVE-2020-8130
73
+ - Default to docker/docker-compose for development and specs
74
+
75
+ ## v1.0.0 - Nov 25, 2018
76
+
77
+ - This release adds cascading materialized view refreshes.
78
+
79
+ ## v0.2.0 Pre-release - Oct 24, 2018
80
+
81
+ - Initial release with feature parity with Scenic::Adapters::Postgres with the exception of cascading materialized view refreshes.
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
@@ -3,11 +3,14 @@
3
3
  require_relative "oracle/index_reapplication"
4
4
  require_relative "oracle/indexes"
5
5
  require_relative "oracle/refresh_dependencies"
6
+ require "active_support/core_ext/string/strip"
6
7
  require "tsortable_hash"
7
8
 
8
9
  module Scenic
9
10
  module Adapters
10
11
  class Oracle
12
+ class SideBySideNotSupportedError < StandardError; end
13
+
11
14
  def initialize(connectable = ActiveRecord::Base)
12
15
  @connectable = connectable
13
16
  end
@@ -37,10 +40,14 @@ module Scenic
37
40
  execute("create materialized view #{quote_table_name(name)} #{'build deferred' if no_data} as #{trimmed_definition(definition)}")
38
41
  end
39
42
 
40
- def update_materialized_view(name, definition, no_data: false)
41
- IndexReapplication.new(connection: connection).on(name) do
42
- drop_materialized_view(name)
43
- 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
44
51
  end
45
52
  end
46
53
 
@@ -66,6 +73,18 @@ module Scenic
66
73
  delegate :connection, to: :@connectable
67
74
  delegate :select_all, :select_value, :execute, :quote_table_name, to: :connection
68
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
+
69
88
  private
70
89
 
71
90
  def view_dependencies
@@ -138,7 +157,7 @@ module Scenic
138
157
  end
139
158
 
140
159
  def trimmed_definition(sql)
141
- sql.strip.sub(/;$/, "").strip
160
+ sql.rstrip.sub(/;$/, "").rstrip.strip_heredoc
142
161
  end
143
162
  end
144
163
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Scenic
4
4
  module OracleAdapter
5
- VERSION = "1.3.4"
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.4
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-07-22 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
@@ -119,6 +105,7 @@ files:
119
105
  - ".gitignore"
120
106
  - ".rspec"
121
107
  - ".rubocop.yml"
108
+ - CHANGELOG.md
122
109
  - CODE_OF_CONDUCT.md
123
110
  - Dockerfile
124
111
  - Gemfile
@@ -158,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
145
  - !ruby/object:Gem::Version
159
146
  version: '0'
160
147
  requirements: []
161
- rubygems_version: 3.5.4
148
+ rubygems_version: 3.5.17
162
149
  signing_key:
163
150
  specification_version: 4
164
151
  summary: Oracle adapter for thoughtbot/scenic