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.
Files changed (22) hide show
  1. data/History.txt +11 -0
  2. data/README.txt +6 -2
  3. data/lib/active_record/connection_adapters/emulation/oracle_adapter.rb +5 -0
  4. data/lib/active_record/connection_adapters/oracle_enhanced_adapter.rb +771 -907
  5. data/lib/active_record/connection_adapters/oracle_enhanced_connection.rb +71 -0
  6. data/lib/active_record/connection_adapters/oracle_enhanced_core_ext.rb +64 -0
  7. data/lib/active_record/connection_adapters/oracle_enhanced_dirty.rb +2 -2
  8. data/lib/active_record/connection_adapters/oracle_enhanced_jdbc_connection.rb +352 -0
  9. data/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb +346 -0
  10. data/lib/active_record/connection_adapters/oracle_enhanced_procedures.rb +2 -1
  11. data/lib/active_record/connection_adapters/oracle_enhanced_reserved_words.rb +126 -0
  12. data/lib/active_record/connection_adapters/oracle_enhanced_version.rb +2 -2
  13. data/spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb +200 -97
  14. data/spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb +170 -0
  15. data/spec/active_record/connection_adapters/oracle_enhanced_core_ext_spec.rb +40 -0
  16. data/spec/active_record/connection_adapters/oracle_enhanced_cpk_spec.rb +11 -6
  17. data/spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb +148 -53
  18. data/spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb +13 -5
  19. data/spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb +27 -0
  20. data/spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb +10 -6
  21. data/spec/spec_helper.rb +51 -6
  22. 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(:adapter => "oracle_enhanced",
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(:adapter => "oracle_enhanced",
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 = @conn.raw_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
- else
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.0'
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
- require 'action_controller/session/active_record_store'
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.1.9
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-01-03 00:00:00 +02:00
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