ctreatma-activerecord-oracle_enhanced-adapter 1.4.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/.rspec +2 -0
  2. data/Gemfile +51 -0
  3. data/History.md +269 -0
  4. data/License.txt +20 -0
  5. data/README.md +378 -0
  6. data/RUNNING_TESTS.md +45 -0
  7. data/Rakefile +46 -0
  8. data/VERSION +1 -0
  9. data/activerecord-oracle_enhanced-adapter.gemspec +130 -0
  10. data/ctreatma-activerecord-oracle_enhanced-adapter.gemspec +129 -0
  11. data/lib/active_record/connection_adapters/emulation/oracle_adapter.rb +5 -0
  12. data/lib/active_record/connection_adapters/oracle_enhanced.rake +105 -0
  13. data/lib/active_record/connection_adapters/oracle_enhanced_activerecord_patches.rb +41 -0
  14. data/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb +1390 -0
  15. data/lib/active_record/connection_adapters/oracle_enhanced_base_ext.rb +106 -0
  16. data/lib/active_record/connection_adapters/oracle_enhanced_column.rb +136 -0
  17. data/lib/active_record/connection_adapters/oracle_enhanced_connection.rb +119 -0
  18. data/lib/active_record/connection_adapters/oracle_enhanced_context_index.rb +328 -0
  19. data/lib/active_record/connection_adapters/oracle_enhanced_core_ext.rb +25 -0
  20. data/lib/active_record/connection_adapters/oracle_enhanced_cpk.rb +21 -0
  21. data/lib/active_record/connection_adapters/oracle_enhanced_dirty.rb +39 -0
  22. data/lib/active_record/connection_adapters/oracle_enhanced_jdbc_connection.rb +553 -0
  23. data/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb +492 -0
  24. data/lib/active_record/connection_adapters/oracle_enhanced_procedures.rb +260 -0
  25. data/lib/active_record/connection_adapters/oracle_enhanced_schema_definitions.rb +213 -0
  26. data/lib/active_record/connection_adapters/oracle_enhanced_schema_dumper.rb +252 -0
  27. data/lib/active_record/connection_adapters/oracle_enhanced_schema_statements.rb +373 -0
  28. data/lib/active_record/connection_adapters/oracle_enhanced_schema_statements_ext.rb +265 -0
  29. data/lib/active_record/connection_adapters/oracle_enhanced_structure_dump.rb +290 -0
  30. data/lib/active_record/connection_adapters/oracle_enhanced_tasks.rb +17 -0
  31. data/lib/active_record/connection_adapters/oracle_enhanced_version.rb +1 -0
  32. data/lib/activerecord-oracle_enhanced-adapter.rb +25 -0
  33. data/spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb +749 -0
  34. data/spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb +310 -0
  35. data/spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb +426 -0
  36. data/spec/active_record/connection_adapters/oracle_enhanced_core_ext_spec.rb +19 -0
  37. data/spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb +113 -0
  38. data/spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb +1330 -0
  39. data/spec/active_record/connection_adapters/oracle_enhanced_dbms_output_spec.rb +69 -0
  40. data/spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb +121 -0
  41. data/spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb +25 -0
  42. data/spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb +374 -0
  43. data/spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb +380 -0
  44. data/spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb +1112 -0
  45. data/spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb +323 -0
  46. data/spec/spec_helper.rb +185 -0
  47. metadata +287 -0
data/RUNNING_TESTS.md ADDED
@@ -0,0 +1,45 @@
1
+ Creating the test database
2
+ --------------------------
3
+
4
+ You need Oracle database (version 10.2 or later) with SYS and SYSTEM user access.
5
+
6
+ If you are on a Mac OS X 10.6 then use [these instructions](http://blog.rayapps.com/2009/09/14/how-to-install-oracle-database-10g-on-mac-os-x-snow-leopard) to install local Oracle DB 10.2.0.4. Other option is to use Linux VM and install Oracle DB on it.
7
+
8
+ If you are on Linux (or will use Linux virtual machine) and need Oracle DB just for running tests then Oracle DB XE edition is enough. See [Oracle XE downloads page](http://www.oracle.com/technetwork/database/express-edition/downloads/index.html) for download links and instructions.
9
+
10
+ If you are getting ORA-12520 errors when running tests then it means that Oracle cannot create enough processes to handle many connections (as during tests many connections are created and destroyed). In this case you need to log in as SYSTEM user and execute e.g.
11
+
12
+ alter system set processes=200 scope=spfile;
13
+
14
+ to increase process limit and then restart the database (this will be necessary if Oracle XE will be used as default processes limit is 40).
15
+
16
+ Ruby versions
17
+ -------------
18
+
19
+ It is recommended to use [RVM](http://rvm.beginrescueend.com) to run tests with different Ruby implementations. oracle_enhanced is mainly tested with MRI 1.8.7 (all Rails versions) and 1.9.2 (Rails 3) and JRuby 1.6.
20
+
21
+ Running tests
22
+ -------------
23
+
24
+ * Create Oracle database schema for test purposes. Review `spec/spec_helper.rb` to see default schema/user names and database names (use environment variables to override defaults)
25
+
26
+ SQL> CREATE USER oracle_enhanced IDENTIFIED BY oracle_enhanced;
27
+ SQL> GRANT unlimited tablespace, create session, create table, create sequence, create procedure, create trigger, create view, create materialized view, create database link, create synonym, create type, ctxapp TO oracle_enhanced;
28
+
29
+ * If you use RVM then switch to corresponding Ruby (1.8.7, 1.9.2 or JRuby) and it is recommended to create isolated gemset for test purposes (e.g. rvm create gemset oracle_enhanced)
30
+
31
+ * Install bundler with
32
+
33
+ gem install bundler
34
+
35
+ * Set RAILS_GEM_VERSION to Rails version that you would like to use in oracle_enhanced tests, e.g.
36
+
37
+ export RAILS_GEM_VERSION=3.0.3
38
+
39
+ * Install necessary gems with
40
+
41
+ bundle install
42
+
43
+ * Run tests with
44
+
45
+ rake spec
data/Rakefile ADDED
@@ -0,0 +1,46 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ begin
4
+ Bundler.setup(:default, :development)
5
+ rescue Bundler::BundlerError => e
6
+ $stderr.puts e.message
7
+ $stderr.puts "Run `bundle install` to install missing gems"
8
+ exit e.status_code
9
+ end
10
+
11
+ require 'rake'
12
+
13
+ require 'jeweler'
14
+ Jeweler::Tasks.new do |gem|
15
+ gem.name = "ctreatma-activerecord-oracle_enhanced-adapter"
16
+ gem.summary = "Oracle enhanced adapter for ActiveRecord"
17
+ gem.description = <<-EOS
18
+ Oracle "enhanced" ActiveRecord adapter contains useful additional methods for working with new and legacy Oracle databases.
19
+ This adapter is superset of original ActiveRecord Oracle adapter.
20
+ EOS
21
+ gem.email = "charles.treatman@gmail.com"
22
+ gem.homepage = "http://github.com/ctreatma/oracle-enhanced"
23
+ gem.authors = ["Charles Treatman", "Raimonds Simanovskis"]
24
+ gem.extra_rdoc_files = ['README.md']
25
+ end
26
+ Jeweler::RubygemsDotOrgTasks.new
27
+
28
+ require 'rspec/core/rake_task'
29
+ RSpec::Core::RakeTask.new(:spec)
30
+
31
+ RSpec::Core::RakeTask.new(:rcov) do |t|
32
+ t.rcov = true
33
+ t.rcov_opts = ['--exclude', '/Library,spec/']
34
+ end
35
+
36
+ task :default => :spec
37
+
38
+ require 'rake/rdoctask'
39
+ Rake::RDocTask.new do |rdoc|
40
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
41
+
42
+ rdoc.rdoc_dir = 'doc'
43
+ rdoc.title = "activerecord-oracle_enhanced-adapter #{version}"
44
+ rdoc.rdoc_files.include('README*')
45
+ rdoc.rdoc_files.include('lib/**/*.rb')
46
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.4.1.1
@@ -0,0 +1,130 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{activerecord-oracle_enhanced-adapter}
8
+ s.version = "1.4.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = [%q{Raimonds Simanovskis}]
12
+ s.date = %q{2012-01-27}
13
+ s.description = %q{Oracle "enhanced" ActiveRecord adapter contains useful additional methods for working with new and legacy Oracle databases.
14
+ This adapter is superset of original ActiveRecord Oracle adapter.
15
+ }
16
+ s.email = %q{raimonds.simanovskis@gmail.com}
17
+ s.extra_rdoc_files = [
18
+ "README.md"
19
+ ]
20
+ s.files = [
21
+ ".rspec",
22
+ "Gemfile",
23
+ "History.md",
24
+ "License.txt",
25
+ "README.md",
26
+ "RUNNING_TESTS.md",
27
+ "Rakefile",
28
+ "VERSION",
29
+ "activerecord-oracle_enhanced-adapter.gemspec",
30
+ "lib/active_record/connection_adapters/emulation/oracle_adapter.rb",
31
+ "lib/active_record/connection_adapters/oracle_enhanced.rake",
32
+ "lib/active_record/connection_adapters/oracle_enhanced_activerecord_patches.rb",
33
+ "lib/active_record/connection_adapters/oracle_enhanced_adapter.rb",
34
+ "lib/active_record/connection_adapters/oracle_enhanced_base_ext.rb",
35
+ "lib/active_record/connection_adapters/oracle_enhanced_column.rb",
36
+ "lib/active_record/connection_adapters/oracle_enhanced_connection.rb",
37
+ "lib/active_record/connection_adapters/oracle_enhanced_context_index.rb",
38
+ "lib/active_record/connection_adapters/oracle_enhanced_core_ext.rb",
39
+ "lib/active_record/connection_adapters/oracle_enhanced_cpk.rb",
40
+ "lib/active_record/connection_adapters/oracle_enhanced_dirty.rb",
41
+ "lib/active_record/connection_adapters/oracle_enhanced_jdbc_connection.rb",
42
+ "lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb",
43
+ "lib/active_record/connection_adapters/oracle_enhanced_procedures.rb",
44
+ "lib/active_record/connection_adapters/oracle_enhanced_schema_definitions.rb",
45
+ "lib/active_record/connection_adapters/oracle_enhanced_schema_dumper.rb",
46
+ "lib/active_record/connection_adapters/oracle_enhanced_schema_statements.rb",
47
+ "lib/active_record/connection_adapters/oracle_enhanced_schema_statements_ext.rb",
48
+ "lib/active_record/connection_adapters/oracle_enhanced_structure_dump.rb",
49
+ "lib/active_record/connection_adapters/oracle_enhanced_tasks.rb",
50
+ "lib/active_record/connection_adapters/oracle_enhanced_version.rb",
51
+ "lib/activerecord-oracle_enhanced-adapter.rb",
52
+ "spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb",
53
+ "spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb",
54
+ "spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb",
55
+ "spec/active_record/connection_adapters/oracle_enhanced_core_ext_spec.rb",
56
+ "spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb",
57
+ "spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb",
58
+ "spec/active_record/connection_adapters/oracle_enhanced_dbms_output_spec.rb",
59
+ "spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb",
60
+ "spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb",
61
+ "spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb",
62
+ "spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb",
63
+ "spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb",
64
+ "spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb",
65
+ "spec/spec_helper.rb"
66
+ ]
67
+ s.homepage = %q{http://github.com/rsim/oracle-enhanced}
68
+ s.require_paths = [%q{lib}]
69
+ s.rubygems_version = %q{1.8.6}
70
+ s.summary = %q{Oracle enhanced adapter for ActiveRecord}
71
+ s.test_files = [
72
+ "spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb",
73
+ "spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb",
74
+ "spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb",
75
+ "spec/active_record/connection_adapters/oracle_enhanced_core_ext_spec.rb",
76
+ "spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb",
77
+ "spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb",
78
+ "spec/active_record/connection_adapters/oracle_enhanced_dbms_output_spec.rb",
79
+ "spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb",
80
+ "spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb",
81
+ "spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb",
82
+ "spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb",
83
+ "spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb",
84
+ "spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb",
85
+ "spec/spec_helper.rb"
86
+ ]
87
+
88
+ if s.respond_to? :specification_version then
89
+ s.specification_version = 3
90
+
91
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
92
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
93
+ s.add_development_dependency(%q<rspec>, ["~> 2.4"])
94
+ s.add_development_dependency(%q<activerecord>, [">= 0"])
95
+ s.add_development_dependency(%q<activemodel>, [">= 0"])
96
+ s.add_development_dependency(%q<activesupport>, [">= 0"])
97
+ s.add_development_dependency(%q<actionpack>, [">= 0"])
98
+ s.add_development_dependency(%q<railties>, [">= 0"])
99
+ s.add_development_dependency(%q<arel>, [">= 0"])
100
+ s.add_development_dependency(%q<journey>, [">= 0"])
101
+ s.add_development_dependency(%q<ruby-plsql>, [">= 0.4.4"])
102
+ s.add_development_dependency(%q<ruby-oci8>, [">= 2.0.4"])
103
+ else
104
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
105
+ s.add_dependency(%q<rspec>, ["~> 2.4"])
106
+ s.add_dependency(%q<activerecord>, [">= 0"])
107
+ s.add_dependency(%q<activemodel>, [">= 0"])
108
+ s.add_dependency(%q<activesupport>, [">= 0"])
109
+ s.add_dependency(%q<actionpack>, [">= 0"])
110
+ s.add_dependency(%q<railties>, [">= 0"])
111
+ s.add_dependency(%q<arel>, [">= 0"])
112
+ s.add_dependency(%q<journey>, [">= 0"])
113
+ s.add_dependency(%q<ruby-plsql>, [">= 0.4.4"])
114
+ s.add_dependency(%q<ruby-oci8>, [">= 2.0.4"])
115
+ end
116
+ else
117
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
118
+ s.add_dependency(%q<rspec>, ["~> 2.4"])
119
+ s.add_dependency(%q<activerecord>, [">= 0"])
120
+ s.add_dependency(%q<activemodel>, [">= 0"])
121
+ s.add_dependency(%q<activesupport>, [">= 0"])
122
+ s.add_dependency(%q<actionpack>, [">= 0"])
123
+ s.add_dependency(%q<railties>, [">= 0"])
124
+ s.add_dependency(%q<arel>, [">= 0"])
125
+ s.add_dependency(%q<journey>, [">= 0"])
126
+ s.add_dependency(%q<ruby-plsql>, [">= 0.4.4"])
127
+ s.add_dependency(%q<ruby-oci8>, [">= 2.0.4"])
128
+ end
129
+ end
130
+
@@ -0,0 +1,129 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "ctreatma-activerecord-oracle_enhanced-adapter"
8
+ s.version = "1.4.1.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Charles Treatman", "Raimonds Simanovskis"]
12
+ s.date = "2012-04-10"
13
+ s.description = "Oracle \"enhanced\" ActiveRecord adapter contains useful additional methods for working with new and legacy Oracle databases.\nThis adapter is superset of original ActiveRecord Oracle adapter.\n"
14
+ s.email = "charles.treatman@gmail.com"
15
+ s.extra_rdoc_files = [
16
+ "README.md"
17
+ ]
18
+ s.files = [
19
+ ".rspec",
20
+ "Gemfile",
21
+ "History.md",
22
+ "License.txt",
23
+ "README.md",
24
+ "RUNNING_TESTS.md",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "activerecord-oracle_enhanced-adapter.gemspec",
28
+ "ctreatma-activerecord-oracle_enhanced-adapter.gemspec",
29
+ "lib/active_record/connection_adapters/emulation/oracle_adapter.rb",
30
+ "lib/active_record/connection_adapters/oracle_enhanced.rake",
31
+ "lib/active_record/connection_adapters/oracle_enhanced_activerecord_patches.rb",
32
+ "lib/active_record/connection_adapters/oracle_enhanced_adapter.rb",
33
+ "lib/active_record/connection_adapters/oracle_enhanced_base_ext.rb",
34
+ "lib/active_record/connection_adapters/oracle_enhanced_column.rb",
35
+ "lib/active_record/connection_adapters/oracle_enhanced_connection.rb",
36
+ "lib/active_record/connection_adapters/oracle_enhanced_context_index.rb",
37
+ "lib/active_record/connection_adapters/oracle_enhanced_core_ext.rb",
38
+ "lib/active_record/connection_adapters/oracle_enhanced_cpk.rb",
39
+ "lib/active_record/connection_adapters/oracle_enhanced_dirty.rb",
40
+ "lib/active_record/connection_adapters/oracle_enhanced_jdbc_connection.rb",
41
+ "lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb",
42
+ "lib/active_record/connection_adapters/oracle_enhanced_procedures.rb",
43
+ "lib/active_record/connection_adapters/oracle_enhanced_schema_definitions.rb",
44
+ "lib/active_record/connection_adapters/oracle_enhanced_schema_dumper.rb",
45
+ "lib/active_record/connection_adapters/oracle_enhanced_schema_statements.rb",
46
+ "lib/active_record/connection_adapters/oracle_enhanced_schema_statements_ext.rb",
47
+ "lib/active_record/connection_adapters/oracle_enhanced_structure_dump.rb",
48
+ "lib/active_record/connection_adapters/oracle_enhanced_tasks.rb",
49
+ "lib/active_record/connection_adapters/oracle_enhanced_version.rb",
50
+ "lib/activerecord-oracle_enhanced-adapter.rb",
51
+ "spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb",
52
+ "spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb",
53
+ "spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb",
54
+ "spec/active_record/connection_adapters/oracle_enhanced_core_ext_spec.rb",
55
+ "spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb",
56
+ "spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb",
57
+ "spec/active_record/connection_adapters/oracle_enhanced_dbms_output_spec.rb",
58
+ "spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb",
59
+ "spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb",
60
+ "spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb",
61
+ "spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb",
62
+ "spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb",
63
+ "spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb",
64
+ "spec/spec_helper.rb"
65
+ ]
66
+ s.homepage = "http://github.com/ctreatma/oracle-enhanced"
67
+ s.require_paths = ["lib"]
68
+ s.rubygems_version = "1.8.21"
69
+ s.summary = "Oracle enhanced adapter for ActiveRecord"
70
+ s.test_files = [
71
+ "spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb",
72
+ "spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb",
73
+ "spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb",
74
+ "spec/active_record/connection_adapters/oracle_enhanced_core_ext_spec.rb",
75
+ "spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb",
76
+ "spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb",
77
+ "spec/active_record/connection_adapters/oracle_enhanced_dbms_output_spec.rb",
78
+ "spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb",
79
+ "spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb",
80
+ "spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb",
81
+ "spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb",
82
+ "spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb",
83
+ "spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb",
84
+ "spec/spec_helper.rb"
85
+ ]
86
+
87
+ if s.respond_to? :specification_version then
88
+ s.specification_version = 3
89
+
90
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
91
+ s.add_development_dependency(%q<jeweler>, ["~> 1.5.1"])
92
+ s.add_development_dependency(%q<rspec>, ["~> 2.4"])
93
+ s.add_development_dependency(%q<activerecord>, [">= 0"])
94
+ s.add_development_dependency(%q<activemodel>, [">= 0"])
95
+ s.add_development_dependency(%q<activesupport>, [">= 0"])
96
+ s.add_development_dependency(%q<actionpack>, [">= 0"])
97
+ s.add_development_dependency(%q<railties>, [">= 0"])
98
+ s.add_development_dependency(%q<arel>, [">= 0"])
99
+ s.add_development_dependency(%q<journey>, [">= 0"])
100
+ s.add_development_dependency(%q<ruby-plsql>, [">= 0.4.4"])
101
+ s.add_development_dependency(%q<ruby-oci8>, [">= 2.0.4"])
102
+ else
103
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
104
+ s.add_dependency(%q<rspec>, ["~> 2.4"])
105
+ s.add_dependency(%q<activerecord>, [">= 0"])
106
+ s.add_dependency(%q<activemodel>, [">= 0"])
107
+ s.add_dependency(%q<activesupport>, [">= 0"])
108
+ s.add_dependency(%q<actionpack>, [">= 0"])
109
+ s.add_dependency(%q<railties>, [">= 0"])
110
+ s.add_dependency(%q<arel>, [">= 0"])
111
+ s.add_dependency(%q<journey>, [">= 0"])
112
+ s.add_dependency(%q<ruby-plsql>, [">= 0.4.4"])
113
+ s.add_dependency(%q<ruby-oci8>, [">= 2.0.4"])
114
+ end
115
+ else
116
+ s.add_dependency(%q<jeweler>, ["~> 1.5.1"])
117
+ s.add_dependency(%q<rspec>, ["~> 2.4"])
118
+ s.add_dependency(%q<activerecord>, [">= 0"])
119
+ s.add_dependency(%q<activemodel>, [">= 0"])
120
+ s.add_dependency(%q<activesupport>, [">= 0"])
121
+ s.add_dependency(%q<actionpack>, [">= 0"])
122
+ s.add_dependency(%q<railties>, [">= 0"])
123
+ s.add_dependency(%q<arel>, [">= 0"])
124
+ s.add_dependency(%q<journey>, [">= 0"])
125
+ s.add_dependency(%q<ruby-plsql>, [">= 0.4.4"])
126
+ s.add_dependency(%q<ruby-oci8>, [">= 2.0.4"])
127
+ end
128
+ end
129
+
@@ -0,0 +1,5 @@
1
+ class ActiveRecord::ConnectionAdapters::OracleAdapter < ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter #:nodoc:
2
+ def adapter_name
3
+ 'Oracle'
4
+ end
5
+ end
@@ -0,0 +1,105 @@
1
+ # implementation idea taken from JDBC adapter
2
+ # added possibility to execute previously defined task (passed as argument to task block)
3
+ def redefine_task(*args, &block)
4
+ task_name = Hash === args.first ? args.first.keys[0] : args.first
5
+ existing_task = Rake.application.lookup task_name
6
+ existing_actions = nil
7
+ if existing_task
8
+ class << existing_task; public :instance_variable_set, :instance_variable_get; end
9
+ existing_task.instance_variable_set "@prerequisites", FileList[]
10
+ existing_actions = existing_task.instance_variable_get "@actions"
11
+ existing_task.instance_variable_set "@actions", []
12
+ end
13
+ task(*args) do
14
+ block.call(existing_actions)
15
+ end
16
+ end
17
+
18
+ # Creates database user with db:create
19
+ if defined?(create_database) == 'method'
20
+ def create_database_with_oracle_enhanced(config)
21
+ if config['adapter'] == 'oracle_enhanced'
22
+ print "Please provide the SYSTEM password for your oracle installation\n>"
23
+ system_password = $stdin.gets.strip
24
+ ActiveRecord::Base.establish_connection(config.merge('username' => 'SYSTEM', 'password' => system_password))
25
+ begin
26
+ ActiveRecord::Base.connection.execute "CREATE USER #{config['username']} IDENTIFIED BY #{config['password']}"
27
+ rescue => e
28
+ if e.message =~ /ORA-01920/ # user name conflicts with another user or role name
29
+ ActiveRecord::Base.connection.execute "ALTER USER #{config['username']} IDENTIFIED BY #{config['password']}"
30
+ else
31
+ raise e
32
+ end
33
+ end
34
+ ActiveRecord::Base.connection.execute "GRANT unlimited tablespace TO #{config['username']}"
35
+ ActiveRecord::Base.connection.execute "GRANT create session TO #{config['username']}"
36
+ ActiveRecord::Base.connection.execute "GRANT create table TO #{config['username']}"
37
+ ActiveRecord::Base.connection.execute "GRANT create sequence TO #{config['username']}"
38
+ else
39
+ create_database_without_oracle_enhanced(config)
40
+ end
41
+ end
42
+ alias :create_database_without_oracle_enhanced :create_database
43
+ alias :create_database :create_database_with_oracle_enhanced
44
+ end
45
+
46
+ # Drops database user with db:drop
47
+ if defined?(drop_database) == 'method'
48
+ def drop_database_with_oracle_enhanced(config)
49
+ if config['adapter'] == 'oracle_enhanced'
50
+ ActiveRecord::Base.establish_connection(config)
51
+ ActiveRecord::Base.connection.execute_structure_dump(ActiveRecord::Base.connection.full_drop)
52
+ else
53
+ drop_database_without_oracle_enhanced(config)
54
+ end
55
+ end
56
+ alias :drop_database_without_oracle_enhanced :drop_database
57
+ alias :drop_database :drop_database_with_oracle_enhanced
58
+ end
59
+
60
+ namespace :db do
61
+
62
+ namespace :structure do
63
+ redefine_task :dump => :environment do |existing_actions|
64
+ abcs = ActiveRecord::Base.configurations
65
+ rails_env = defined?(Rails.env) ? Rails.env : RAILS_ENV
66
+ if abcs[rails_env]['adapter'] == 'oracle_enhanced'
67
+ ActiveRecord::Base.establish_connection(abcs[rails_env])
68
+ File.open("db/#{rails_env}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump }
69
+ if ActiveRecord::Base.connection.supports_migrations?
70
+ File.open("db/#{rails_env}_structure.sql", "a") { |f| f << ActiveRecord::Base.connection.dump_schema_information }
71
+ end
72
+ if abcs[rails_env]['structure_dump'] == "db_stored_code"
73
+ File.open("db/#{rails_env}_structure.sql", "a") { |f| f << ActiveRecord::Base.connection.structure_dump_db_stored_code }
74
+ end
75
+ else
76
+ Array(existing_actions).each{|action| action.call}
77
+ end
78
+ end
79
+ end
80
+
81
+ namespace :test do
82
+ redefine_task :clone_structure => [ "db:structure:dump", "db:test:purge" ] do |existing_actions|
83
+ abcs = ActiveRecord::Base.configurations
84
+ rails_env = defined?(Rails.env) ? Rails.env : RAILS_ENV
85
+ if abcs[rails_env]['adapter'] == 'oracle_enhanced' && abcs['test']['adapter'] == 'oracle_enhanced'
86
+ ActiveRecord::Base.establish_connection(:test)
87
+ ActiveRecord::Base.connection.execute_structure_dump(File.read("db/#{rails_env}_structure.sql"))
88
+ else
89
+ Array(existing_actions).each{|action| action.call}
90
+ end
91
+ end
92
+
93
+ redefine_task :purge => :environment do |existing_actions|
94
+ abcs = ActiveRecord::Base.configurations
95
+ if abcs['test']['adapter'] == 'oracle_enhanced'
96
+ ActiveRecord::Base.establish_connection(:test)
97
+ ActiveRecord::Base.connection.execute_structure_dump(ActiveRecord::Base.connection.full_drop)
98
+ ActiveRecord::Base.connection.execute("PURGE RECYCLEBIN") rescue nil
99
+ else
100
+ Array(existing_actions).each{|action| action.call}
101
+ end
102
+ end
103
+
104
+ end
105
+ end