activerecord-oracle_enhanced-adapter 1.1.9 → 1.2.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.
- data/History.txt +11 -0
- data/README.txt +6 -2
- data/lib/active_record/connection_adapters/emulation/oracle_adapter.rb +5 -0
- data/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb +771 -907
- data/lib/active_record/connection_adapters/oracle_enhanced_connection.rb +71 -0
- data/lib/active_record/connection_adapters/oracle_enhanced_core_ext.rb +64 -0
- data/lib/active_record/connection_adapters/oracle_enhanced_dirty.rb +2 -2
- data/lib/active_record/connection_adapters/oracle_enhanced_jdbc_connection.rb +352 -0
- data/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb +346 -0
- data/lib/active_record/connection_adapters/oracle_enhanced_procedures.rb +2 -1
- data/lib/active_record/connection_adapters/oracle_enhanced_reserved_words.rb +126 -0
- data/lib/active_record/connection_adapters/oracle_enhanced_version.rb +2 -2
- data/spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb +200 -97
- data/spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb +170 -0
- data/spec/active_record/connection_adapters/oracle_enhanced_core_ext_spec.rb +40 -0
- data/spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb +11 -6
- data/spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb +148 -53
- data/spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb +13 -5
- data/spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb +27 -0
- data/spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb +10 -6
- data/spec/spec_helper.rb +51 -6
- metadata +11 -2
@@ -5,17 +5,14 @@ if ActiveRecord::Base.instance_methods.include?('changed?')
|
|
5
5
|
describe "OracleEnhancedAdapter dirty object tracking" do
|
6
6
|
|
7
7
|
before(:all) do
|
8
|
-
ActiveRecord::Base.establish_connection(
|
9
|
-
:database => "xe",
|
10
|
-
:username => "hr",
|
11
|
-
:password => "hr")
|
8
|
+
ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
|
12
9
|
@conn = ActiveRecord::Base.connection
|
13
10
|
@conn.execute <<-SQL
|
14
11
|
CREATE TABLE test_employees (
|
15
12
|
id NUMBER,
|
16
13
|
first_name VARCHAR2(20),
|
17
14
|
last_name VARCHAR2(25),
|
18
|
-
job_id NUMBER(6,0),
|
15
|
+
job_id NUMBER(6,0) NULL,
|
19
16
|
salary NUMBER(8,2),
|
20
17
|
comments CLOB,
|
21
18
|
hire_date DATE
|
@@ -80,6 +77,17 @@ if ActiveRecord::Base.instance_methods.include?('changed?')
|
|
80
77
|
@employee.should_not be_changed
|
81
78
|
end
|
82
79
|
|
80
|
+
it "should not mark integer as changed when reassigning it" do
|
81
|
+
@employee = TestEmployee.new
|
82
|
+
@employee.job_id = 0
|
83
|
+
@employee.save!.should be_true
|
84
|
+
|
85
|
+
@employee.should_not be_changed
|
86
|
+
|
87
|
+
@employee.job_id = '0'
|
88
|
+
@employee.should_not be_changed
|
89
|
+
end
|
90
|
+
|
83
91
|
end
|
84
92
|
|
85
93
|
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
describe "OracleEnhancedAdapter emulate OracleAdapter" do
|
6
|
+
|
7
|
+
before(:all) do
|
8
|
+
if defined?(ActiveRecord::ConnectionAdapters::OracleAdapter)
|
9
|
+
@old_oracle_adapter = ActiveRecord::ConnectionAdapters::OracleAdapter
|
10
|
+
ActiveRecord::ConnectionAdapters.send(:remove_const, :OracleAdapter)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should be an OracleAdapter" do
|
15
|
+
@conn = ActiveRecord::Base.establish_connection(CONNECTION_PARAMS.merge(:emulate_oracle_adapter => true))
|
16
|
+
ActiveRecord::Base.connection.should_not be_nil
|
17
|
+
ActiveRecord::Base.connection.is_a?(ActiveRecord::ConnectionAdapters::OracleAdapter).should be_true
|
18
|
+
end
|
19
|
+
|
20
|
+
after(:all) do
|
21
|
+
if @old_oracle_adapter
|
22
|
+
ActiveRecord::ConnectionAdapters.send(:remove_const, :OracleAdapter)
|
23
|
+
ActiveRecord::ConnectionAdapters::OracleAdapter = @old_oracle_adapter
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -4,12 +4,9 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
4
4
|
include LoggerSpecHelper
|
5
5
|
|
6
6
|
before(:all) do
|
7
|
-
ActiveRecord::Base.establish_connection(
|
8
|
-
:database => "xe",
|
9
|
-
:username => "hr",
|
10
|
-
:password => "hr")
|
7
|
+
ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
|
11
8
|
@conn = ActiveRecord::Base.connection
|
12
|
-
plsql.connection =
|
9
|
+
plsql.connection = ActiveRecord::Base.connection.raw_connection
|
13
10
|
@conn.execute("DROP TABLE test_employees") rescue nil
|
14
11
|
@conn.execute <<-SQL
|
15
12
|
CREATE TABLE test_employees (
|
@@ -95,7 +92,7 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
95
92
|
|
96
93
|
ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter.emulate_dates_by_column_name = true
|
97
94
|
|
98
|
-
class TestEmployee < ActiveRecord::Base
|
95
|
+
class ::TestEmployee < ActiveRecord::Base
|
99
96
|
set_primary_key :employee_id
|
100
97
|
|
101
98
|
validates_presence_of :first_name, :last_name, :hire_date
|
@@ -136,6 +133,7 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
136
133
|
|
137
134
|
after(:all) do
|
138
135
|
Object.send(:remove_const, "TestEmployee")
|
136
|
+
@conn = ActiveRecord::Base.connection
|
139
137
|
@conn.execute "DROP TABLE test_employees"
|
140
138
|
@conn.execute "DROP SEQUENCE test_employees_s"
|
141
139
|
@conn.execute "DROP PACKAGE test_employees_pkg"
|
@@ -218,6 +216,8 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
218
216
|
|
219
217
|
it "should log create record" do
|
220
218
|
log_to @buffer
|
219
|
+
# reestablish plsql.connection as log_to might reset existing connection
|
220
|
+
plsql.connection = ActiveRecord::Base.connection.raw_connection
|
221
221
|
@employee = TestEmployee.create(
|
222
222
|
:first_name => "First",
|
223
223
|
:last_name => "Last",
|
@@ -234,6 +234,8 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
234
234
|
:hire_date => @today
|
235
235
|
)
|
236
236
|
log_to @buffer
|
237
|
+
# reestablish plsql.connection as log_to might reset existing connection
|
238
|
+
plsql.connection = ActiveRecord::Base.connection.raw_connection
|
237
239
|
@employee.save!
|
238
240
|
@buffer.string.should match(/^TestEmployee Update \(\d+\.\d+(ms)?\) custom update method with employee_id=#{@employee.id}$/)
|
239
241
|
end
|
@@ -245,6 +247,8 @@ describe "OracleEnhancedAdapter custom methods for create, update and destroy" d
|
|
245
247
|
:hire_date => @today
|
246
248
|
)
|
247
249
|
log_to @buffer
|
250
|
+
# reestablish plsql.connection as log_to might reset existing connection
|
251
|
+
plsql.connection = ActiveRecord::Base.connection.raw_connection
|
248
252
|
@employee.destroy
|
249
253
|
@buffer.string.should match(/^TestEmployee Destroy \(\d+\.\d+(ms)?\) custom delete method with employee_id=#{@employee.id}$/)
|
250
254
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -14,19 +14,36 @@ elsif ENV['RAILS_GEM_VERSION'] =~ /^2.1/
|
|
14
14
|
gem 'actionpack', '=2.1.2'
|
15
15
|
gem 'activesupport', '=2.1.2'
|
16
16
|
gem 'composite_primary_keys', '=1.0.8'
|
17
|
-
|
17
|
+
elsif ENV['RAILS_GEM_VERSION'] =~ /^2.2/
|
18
18
|
gem 'activerecord', '=2.2.2'
|
19
19
|
gem 'actionpack', '=2.2.2'
|
20
20
|
gem 'activesupport', '=2.2.2'
|
21
|
-
gem 'composite_primary_keys', '=2.2.
|
21
|
+
gem 'composite_primary_keys', '=2.2.2'
|
22
|
+
else
|
23
|
+
ENV['RAILS_GEM_VERSION'] ||= '2.3.2'
|
24
|
+
gem 'activerecord', '=2.3.2'
|
25
|
+
gem 'actionpack', '=2.3.2'
|
26
|
+
gem 'activesupport', '=2.3.2'
|
27
|
+
gem 'composite_primary_keys', '=2.2.2'
|
22
28
|
end
|
23
29
|
|
24
30
|
require 'activerecord'
|
25
31
|
require 'actionpack'
|
26
|
-
|
32
|
+
if ENV['RAILS_GEM_VERSION'] >= '2.3'
|
33
|
+
require 'action_controller/session/abstract_store'
|
34
|
+
require 'active_record/session_store'
|
35
|
+
else
|
36
|
+
require 'action_controller/session/active_record_store'
|
37
|
+
end
|
38
|
+
if !defined?(RUBY_ENGINE)
|
39
|
+
gem "activerecord-oracle-adapter"
|
40
|
+
require 'active_record/connection_adapters/oracle_adapter'
|
41
|
+
elsif RUBY_ENGINE == 'jruby'
|
42
|
+
gem "activerecord-jdbc-adapter"
|
43
|
+
require 'active_record/connection_adapters/jdbc_adapter'
|
44
|
+
end
|
45
|
+
|
27
46
|
require 'active_record/connection_adapters/oracle_enhanced_adapter'
|
28
|
-
gem "activerecord-oracle-adapter"
|
29
|
-
require 'active_record/connection_adapters/oracle_adapter'
|
30
47
|
|
31
48
|
module LoggerSpecHelper
|
32
49
|
def log_to(stream)
|
@@ -39,4 +56,32 @@ module LoggerSpecHelper
|
|
39
56
|
ActiveRecord::Base.colorize_logging = false
|
40
57
|
ActiveRecord::Base.logger.level = Logger::DEBUG
|
41
58
|
end
|
42
|
-
end
|
59
|
+
end
|
60
|
+
|
61
|
+
CONNECTION_PARAMS = {
|
62
|
+
:adapter => "oracle_enhanced",
|
63
|
+
:database => "xe",
|
64
|
+
:host => "ubuntu810",
|
65
|
+
:username => "hr",
|
66
|
+
:password => "hr"
|
67
|
+
}
|
68
|
+
|
69
|
+
JDBC_CONNECTION_PARAMS = {
|
70
|
+
:adapter => "jdbc",
|
71
|
+
:driver => "oracle.jdbc.driver.OracleDriver",
|
72
|
+
:url => "jdbc:oracle:thin:@ubuntu810:1521:XE",
|
73
|
+
:username => "hr",
|
74
|
+
:password => "hr"
|
75
|
+
}
|
76
|
+
|
77
|
+
SYS_CONNECTION_PARAMS = {
|
78
|
+
:adapter => "oracle_enhanced",
|
79
|
+
:database => "xe",
|
80
|
+
:host => "ubuntu810",
|
81
|
+
:username => "sys",
|
82
|
+
:password => "manager",
|
83
|
+
:privilege => "SYSDBA"
|
84
|
+
}
|
85
|
+
|
86
|
+
# For JRuby Set default $KCODE to UTF8
|
87
|
+
$KCODE = "UTF8" if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-oracle_enhanced-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Raimonds Simanovskis
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-03-22 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -37,17 +37,26 @@ files:
|
|
37
37
|
- History.txt
|
38
38
|
- License.txt
|
39
39
|
- README.txt
|
40
|
+
- lib/active_record/connection_adapters/emulation/oracle_adapter.rb
|
40
41
|
- lib/active_record/connection_adapters/oracle_enhanced.rake
|
41
42
|
- lib/active_record/connection_adapters/oracle_enhanced_adapter.rb
|
43
|
+
- lib/active_record/connection_adapters/oracle_enhanced_connection.rb
|
44
|
+
- lib/active_record/connection_adapters/oracle_enhanced_core_ext.rb
|
42
45
|
- lib/active_record/connection_adapters/oracle_enhanced_cpk.rb
|
43
46
|
- lib/active_record/connection_adapters/oracle_enhanced_dirty.rb
|
47
|
+
- lib/active_record/connection_adapters/oracle_enhanced_jdbc_connection.rb
|
48
|
+
- lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb
|
44
49
|
- lib/active_record/connection_adapters/oracle_enhanced_procedures.rb
|
50
|
+
- lib/active_record/connection_adapters/oracle_enhanced_reserved_words.rb
|
45
51
|
- lib/active_record/connection_adapters/oracle_enhanced_tasks.rb
|
46
52
|
- lib/active_record/connection_adapters/oracle_enhanced_version.rb
|
47
53
|
- spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb
|
54
|
+
- spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb
|
55
|
+
- spec/active_record/connection_adapters/oracle_enhanced_core_ext_spec.rb
|
48
56
|
- spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb
|
49
57
|
- spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb
|
50
58
|
- spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb
|
59
|
+
- spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb
|
51
60
|
- spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb
|
52
61
|
- spec/spec.opts
|
53
62
|
- spec/spec_helper.rb
|