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 +4 -4
- data/.github/workflows/ci.yml +1 -1
- data/CHANGELOG.md +81 -0
- data/Dockerfile +1 -1
- data/Gemfile +1 -1
- data/lib/scenic/adapters/oracle/railtie.rb +13 -5
- data/lib/scenic/adapters/oracle.rb +24 -5
- data/lib/scenic/oracle_adapter/version.rb +1 -1
- data/lib/scenic/oracle_adapter.rb +3 -0
- data/scenic-oracle_adapter.gemspec +1 -2
- metadata +6 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c60d517a9dc52283f5d2706a11f0a6c9b9107e5963a4c29a7fa0a3028007cd94
|
4
|
+
data.tar.gz: 6e8adf1e2bc80e2ebd47cb3d05e441b6edc507163402936cc2c394a3bf2fca08
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7b2a487534bb336fa2a185ecda1d02e18173ff724416a3fd0d5dfd61d452d51ce9d9e8cfa5163851388799a00a649d98fc24b1980715619e6507fe1428771067
|
7
|
+
data.tar.gz: 03ba13f1414657cd3bff98cb2fd295a4ccf4e5813b48a0b11c04d21c3ba8ecdc26791bea1956488ece581461297e09b13c6ec2beb88fa1749ad7fa896e2a2e4b
|
data/.github/workflows/ci.yml
CHANGED
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
data/Gemfile
CHANGED
@@ -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
|
12
|
-
|
13
|
-
|
14
|
-
ActiveRecord::ConnectionAdapters::
|
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
|
-
|
42
|
-
|
43
|
-
|
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.
|
160
|
+
sql.rstrip.sub(/;$/, "").rstrip.strip_heredoc
|
142
161
|
end
|
143
162
|
end
|
144
163
|
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.
|
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.
|
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:
|
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.
|
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.
|
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.
|
148
|
+
rubygems_version: 3.5.17
|
162
149
|
signing_key:
|
163
150
|
specification_version: 4
|
164
151
|
summary: Oracle adapter for thoughtbot/scenic
|