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 ADDED
@@ -0,0 +1,3 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in oracle-enhanced-enhanced.gemspec
4
+ gemspec
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,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -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,7 @@
1
+ module Oracle
2
+ module Enhanced
3
+ module Enhanced
4
+ VERSION = "0.0.1"
5
+ end
6
+ end
7
+ 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
+