oracle-enhanced-enhanced 0.0.1
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.
- data/.gitignore +3 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +17 -0
- data/Rakefile +2 -0
- data/lib/active_directory/connection_adapters/oracle_enhanced_adapter.rb +69 -0
- data/lib/oracle-enhanced-enhanced/version.rb +7 -0
- data/oracle-enhanced-enhanced.gemspec +23 -0
- metadata +87 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
oracle-enhanced-enhanced (0.0.1)
|
5
|
+
activerecord-oracle_enhanced-adapter
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
activerecord-oracle_enhanced-adapter (1.3.2)
|
11
|
+
|
12
|
+
PLATFORMS
|
13
|
+
ruby
|
14
|
+
|
15
|
+
DEPENDENCIES
|
16
|
+
activerecord-oracle_enhanced-adapter
|
17
|
+
oracle-enhanced-enhanced!
|
data/Rakefile
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
module ActiveRecord
|
2
|
+
module ConnectionAdapters
|
3
|
+
class OracleEnhancedAdapter
|
4
|
+
|
5
|
+
# Set our new enhanced defaults
|
6
|
+
set_enhanced_defaults
|
7
|
+
|
8
|
+
# Maximum length of an Oracle VARCHAR2 field
|
9
|
+
VARCHAR2_MAX_LENGTH = 4000
|
10
|
+
|
11
|
+
# Indicate whether to use varchar2(length) for TEXT columns or clob (default).
|
12
|
+
# Pass true or false to select varchar2 or clob, respectively. Optionally pass in the desired varchar2 length.
|
13
|
+
def self.set_text_storage_representation(use_varchar2, length = VARCHAR2_MAX_LENGTH)
|
14
|
+
NATIVE_DATABASE_TYPES[:text] = use_varchar2 ? {:name => 'VARCHAR2', :limit => length} : {:name => 'CLOB'}
|
15
|
+
end
|
16
|
+
|
17
|
+
# Create convenience methods to check what storage representation is in effect
|
18
|
+
# e.g. text_is_clob?, text_is_varchar2?
|
19
|
+
%w(clob varchar2).each do |format|
|
20
|
+
(class << self; self; end).instance_eval do
|
21
|
+
define_method "text_is_#{format}?" do
|
22
|
+
NATIVE_DATABASE_TYPES[:text][:name].downcase == format
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# Convert an existing CLOB field into a VARCHAR2. For use in migrations.
|
28
|
+
def convert_clob_to_varchar2(table_name, column_name, varchar2_length = VARCHAR2_MAX_LENGTH, temp_column_name = nil)
|
29
|
+
convert_text_column_storage_type table_name, column_name, "varchar2#{varchar2_length}", temp_column_name
|
30
|
+
end
|
31
|
+
|
32
|
+
# Convert an existing VARCHAR2 field into a CLOB. For use in migrations.
|
33
|
+
def convert_varchar2_to_clob(table_name, column_name, temp_column_name = nil)
|
34
|
+
convert_text_column_storage_type table_name, column_name, 'clob', temp_column_name
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
# Enable our enhanced settings/defaults
|
40
|
+
def set_enhanced_defaults
|
41
|
+
# Use varchar2(4000) for TEXT fields
|
42
|
+
set_text_storage_representation true
|
43
|
+
|
44
|
+
# Cache columns because we don't need to hit the database to check metadata all the time
|
45
|
+
self.cache_columns = true
|
46
|
+
|
47
|
+
# Oracle's default sequence behavious doesn't appeal to us OCD freaks who prefer monotonically increasing sequences
|
48
|
+
self.default_sequence_start_value = "1 NOCACHE ORDER"
|
49
|
+
end
|
50
|
+
|
51
|
+
# Convert a field from varchar2 to clob or vice versa
|
52
|
+
def convert_text_column_storage_type(table_name, column_name, to_type, temp_column_name)
|
53
|
+
# Inspired by http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1770086700346491686
|
54
|
+
temp_col = temp_column_name || 'oee_temp_col'
|
55
|
+
cmds = <<-SQL
|
56
|
+
alter table #{table_name} add #{temp_col} #{to_type}
|
57
|
+
update #{table_name} set #{temp_col} = #{column_name}
|
58
|
+
update #{table_name} set #{column_name} = null
|
59
|
+
alter table #{table_name} modify #{column_name} long
|
60
|
+
alter table #{table_name} modify #{column_name} #{to_type}
|
61
|
+
update #{table_name} set #{column_name} = #{temp_col}
|
62
|
+
alter table #{table_name} drop column #{temp_col}
|
63
|
+
SQL
|
64
|
+
cmds.split('\n').each{|cmd| execute cmd}
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "oracle-enhanced-enhanced/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "oracle-enhanced-enhanced"
|
7
|
+
s.version = Oracle::Enhanced::Enhanced::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Steve Lamotte"]
|
10
|
+
s.email = ["slamotte@winnipeg.ca"]
|
11
|
+
s.homepage = "http://gems.winnipegtransit.org"
|
12
|
+
s.summary = %q{Additional enhancements/customizations to the Oracle Enhanced adapter}
|
13
|
+
s.description = %q{This gem includes several enhancements and customizations to the standard Oracle Enhanced adapter, which is still required. Any customizations to this adapter's behaviour or additional Oracle-specific utilities should be added here.}
|
14
|
+
|
15
|
+
s.rubyforge_project = "oracle-enhanced-enhanced"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
s.add_runtime_dependency "activerecord-oracle_enhanced-adapter"
|
23
|
+
end
|
metadata
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: oracle-enhanced-enhanced
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Steve Lamotte
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-04-28 00:00:00 -05:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: activerecord-oracle_enhanced-adapter
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
description: This gem includes several enhancements and customizations to the standard Oracle Enhanced adapter, which is still required. Any customizations to this adapter's behaviour or additional Oracle-specific utilities should be added here.
|
36
|
+
email:
|
37
|
+
- slamotte@winnipeg.ca
|
38
|
+
executables: []
|
39
|
+
|
40
|
+
extensions: []
|
41
|
+
|
42
|
+
extra_rdoc_files: []
|
43
|
+
|
44
|
+
files:
|
45
|
+
- .gitignore
|
46
|
+
- Gemfile
|
47
|
+
- Gemfile.lock
|
48
|
+
- Rakefile
|
49
|
+
- lib/active_directory/connection_adapters/oracle_enhanced_adapter.rb
|
50
|
+
- lib/oracle-enhanced-enhanced/version.rb
|
51
|
+
- oracle-enhanced-enhanced.gemspec
|
52
|
+
has_rdoc: true
|
53
|
+
homepage: http://gems.winnipegtransit.org
|
54
|
+
licenses: []
|
55
|
+
|
56
|
+
post_install_message:
|
57
|
+
rdoc_options: []
|
58
|
+
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
hash: 3
|
67
|
+
segments:
|
68
|
+
- 0
|
69
|
+
version: "0"
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
hash: 3
|
76
|
+
segments:
|
77
|
+
- 0
|
78
|
+
version: "0"
|
79
|
+
requirements: []
|
80
|
+
|
81
|
+
rubyforge_project: oracle-enhanced-enhanced
|
82
|
+
rubygems_version: 1.3.7
|
83
|
+
signing_key:
|
84
|
+
specification_version: 3
|
85
|
+
summary: Additional enhancements/customizations to the Oracle Enhanced adapter
|
86
|
+
test_files: []
|
87
|
+
|