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.
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