activerecord-oracle_enhanced-adapter 1.1.9 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|