activerecord-oracle_enhanced-adapter 1.8.0.rc1 → 1.8.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4a86ef85ec7e673fd5ce17f5c7b3310b556f28a2
4
- data.tar.gz: 997989db47ecd4c360ae34536309e25b983ad7f7
3
+ metadata.gz: 03e596bfe5c5140e4cbf6dd7bacbaacdf97766eb
4
+ data.tar.gz: ae305e3211e34a5341b5d53075588641a62919b5
5
5
  SHA512:
6
- metadata.gz: 42b2013124fe69b031243f33a5c1f2be3b483259975d593d7b5d4d523988246581df3369baa9e6581fda2c10dd4a90887ecc043cd03ee3f1dc67805f59d0e66b
7
- data.tar.gz: a08ff57547d9f528d0dce8d6d8f026ba82256d889c1415d142b5df2a18a2e26ccda255af4da40274927d8a0f9b971eb108d363c18f15222bb44d46725444876d
6
+ metadata.gz: '09e01b985dae8d8fb9550e772188946c97a53a9436600df58488d697dac989ea58b8112df01d4ca6738bc7cd32f81184d28a4b9a673f7f286bce079c0bd56c93'
7
+ data.tar.gz: d13e2aabe98d177de165da2c762d3339c0f4b7e452fef02bfbc71b62848484b8e25c44516f44db306e29d25fc30584380f342ff82fd0db34d59439723d698bd4
data/History.md CHANGED
@@ -1,3 +1,19 @@
1
+ ## 1.8.0.rc2 / 2017-04-19
2
+
3
+ * Changes and bug fixes
4
+ * Fix `select_all` with legacy `binds` [#1246,#1248,#1250]
5
+ * Fix the `BINARY_FLOAT` column type returns nil in JRuby [#1244, #1254, #1255]
6
+ * Handle `TIMESTAMP WITH TIMEZONE` separately from `TIMEZONE` [#1206, #1267, #1268]
7
+ * Changing `NLS_DATE_FORMAT` and `NLS_TIMESTAMP_FORMAT` is not supported [#1267, #1268]
8
+ * Let abstract adapter type cast Date, DateTime and Time for JRuby [#1272, #1273]
9
+ * Collapse a file specification in gemspec [#1296, #1297]
10
+ * Do not write VERSION directly with gemspec [#1298, #1299]
11
+ * Omit specification of release date in gemspec [#1298, #1299]
12
+ * Add missing `timestamptz.rb` to gemspec at release18 branch [#1286]
13
+ * Remove specs for unsupported behaviour which causes `ORA-01861` [#1267, #1269, #1271]
14
+ * Address `OCIException: OCI8 was already closed` at specs for JSON [#1265, #1266]
15
+ * Bump Ruby version to 2.2.7 [#1261]
16
+
1
17
  ## 1.8.0.rc1 / 2017-03-20
2
18
 
3
19
  * Major enhancements
@@ -17,7 +17,7 @@ module ActiveRecord
17
17
  end
18
18
 
19
19
  def exec_query(sql, name = "SQL", binds = [], prepare: false)
20
- type_casted_binds = binds.map { |attr| type_cast(attr.value_for_database) }
20
+ type_casted_binds = type_casted_binds(binds)
21
21
 
22
22
  log(sql, name, binds, type_casted_binds) do
23
23
  cursor = nil
@@ -94,7 +94,7 @@ module ActiveRecord
94
94
  # New method in ActiveRecord 3.1
95
95
  def exec_insert(sql, name = nil, binds = [], pk = nil, sequence_name = nil)
96
96
  sql, binds = sql_for_insert(sql, pk, nil, sequence_name, binds)
97
- type_casted_binds = binds.map { |attr| type_cast(attr.value_for_database) }
97
+ type_casted_binds = type_casted_binds(binds)
98
98
 
99
99
  log(sql, name, binds, type_casted_binds) do
100
100
  returning_id_col = returning_id_index = nil
@@ -130,7 +130,7 @@ module ActiveRecord
130
130
 
131
131
  # New method in ActiveRecord 3.1
132
132
  def exec_update(sql, name = nil, binds = [])
133
- type_casted_binds = binds.map { |attr| type_cast(attr.value_for_database) }
133
+ type_casted_binds = type_casted_binds(binds)
134
134
 
135
135
  log(sql, name, binds, type_casted_binds) do
136
136
  cached = false
@@ -137,7 +137,11 @@ module ActiveRecord
137
137
  end
138
138
 
139
139
  # Set session time zone to current time zone
140
- @raw_connection.setSessionTimeZone(time_zone)
140
+ if ActiveRecord::Base.default_timezone == :local
141
+ @raw_connection.setSessionTimeZone(time_zone)
142
+ elsif ActiveRecord::Base.default_timezone == :utc
143
+ @raw_connection.setSessionTimeZone("UTC")
144
+ end
141
145
 
142
146
  # Set default number of rows to prefetch
143
147
  # @raw_connection.setDefaultRowPrefetch(prefetch_rows) if prefetch_rows
@@ -362,8 +366,8 @@ module ActiveRecord
362
366
  when Java::JavaSql::Timestamp
363
367
  @raw_statement.setTimestamp(position, value)
364
368
  when Time
365
- # TODO: Really needed or not
366
- @raw_statement.setTimestamp(position, value)
369
+ new_value = Java::java.sql.Timestamp.new(value.year - 1900, value.month - 1, value.day, value.hour, value.min, value.sec, value.usec * 1000)
370
+ @raw_statement.setTimestamp(position, new_value)
367
371
  when NilClass
368
372
  # TODO: currently nil is always bound as NULL with VARCHAR type.
369
373
  # When nils will actually be used by ActiveRecord as bound parameters
@@ -506,6 +510,8 @@ module ActiveRecord
506
510
  else
507
511
  BigDecimal.new(d.stringValue)
508
512
  end
513
+ when :BINARY_FLOAT
514
+ rset.getFloat(i)
509
515
  when :VARCHAR2, :CHAR, :LONG, :NVARCHAR2, :NCHAR
510
516
  rset.getString(i)
511
517
  when :DATE
@@ -12,10 +12,6 @@ module ActiveRecord
12
12
  clob = Java::OracleSql::CLOB.createTemporary(@connection.raw_connection, false, Java::OracleSql::CLOB::DURATION_SESSION)
13
13
  clob.setString(1, value.to_s)
14
14
  clob
15
- when Date, DateTime
16
- Java::oracle.sql.DATE.new(value.strftime("%Y-%m-%d %H:%M:%S"))
17
- when Time
18
- Java::java.sql.Timestamp.new(value.year - 1900, value.month - 1, value.day, value.hour, value.min, value.sec, value.usec * 1000)
19
15
  else
20
16
  super
21
17
  end
@@ -119,7 +119,7 @@ module ActiveRecord
119
119
 
120
120
  def _type_cast(value)
121
121
  case value
122
- when Date, Time
122
+ when ActiveRecord::OracleEnhanced::Type::TimestampTz::Data
123
123
  if value.acts_like?(:time)
124
124
  zone_conversion_method = ActiveRecord::Base.default_timezone == :utc ? :getutc : :getlocal
125
125
  value.respond_to?(zone_conversion_method) ? value.send(zone_conversion_method) : value
@@ -941,6 +941,7 @@ module ActiveRecord
941
941
  def initialize_type_map(m)
942
942
  super
943
943
  # oracle
944
+ register_class_with_precision m, %r(ZONE)i, ActiveRecord::OracleEnhanced::Type::TimestampTz
944
945
  register_class_with_limit m, %r(raw)i, ActiveRecord::OracleEnhanced::Type::Raw
945
946
  register_class_with_limit m, %r(char)i, ActiveRecord::OracleEnhanced::Type::String
946
947
  register_class_with_limit m, %r(clob)i, ActiveRecord::OracleEnhanced::Type::Text
@@ -1114,3 +1115,6 @@ ActiveRecord::Type.register(:boolean, ActiveRecord::OracleEnhanced::Type::Boolea
1114
1115
  # Add JSON attribute support
1115
1116
  require "active_record/oracle_enhanced/type/json"
1116
1117
  ActiveRecord::Type.register(:json, ActiveRecord::OracleEnhanced::Type::Json, adapter: :oracleenhanced)
1118
+
1119
+ # Add Type:TimestampTz
1120
+ require "active_record/oracle_enhanced/type/timestamptz"
@@ -0,0 +1,23 @@
1
+ module ActiveRecord
2
+ module OracleEnhanced
3
+ module Type
4
+ class TimestampTz < ActiveRecord::Type::DateTime
5
+ def type
6
+ :timestamptz
7
+ end
8
+
9
+ class Data < DelegateClass(::Time) # :nodoc:
10
+ end
11
+
12
+ def serialize(value)
13
+ case value = super
14
+ when ::Time
15
+ Data.new(value)
16
+ else
17
+ value
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -511,100 +511,6 @@ describe "OracleEnhancedAdapter timestamp with timezone support" do
511
511
 
512
512
  end
513
513
 
514
- describe "OracleEnhancedAdapter date and timestamp with different NLS date formats" do
515
- before(:all) do
516
- ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
517
- @conn = ActiveRecord::Base.connection
518
- @conn.execute <<-SQL
519
- CREATE TABLE test_employees (
520
- employee_id NUMBER(6,0) PRIMARY KEY,
521
- first_name VARCHAR2(20),
522
- last_name VARCHAR2(25),
523
- email VARCHAR2(25),
524
- phone_number VARCHAR2(20),
525
- hire_date DATE,
526
- job_id NUMBER(6,0),
527
- salary NUMBER(8,2),
528
- commission_pct NUMBER(2,2),
529
- manager_id NUMBER(6,0),
530
- department_id NUMBER(4,0),
531
- created_at DATE,
532
- created_at_ts TIMESTAMP
533
- )
534
- SQL
535
- @conn.execute <<-SQL
536
- CREATE SEQUENCE test_employees_seq MINVALUE 1
537
- INCREMENT BY 1 CACHE 20 NOORDER NOCYCLE
538
- SQL
539
- # @conn.execute %q{alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'}
540
- @conn.execute "alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS'"
541
- # @conn.execute %q{alter session set nls_timestamp_format = 'YYYY-MM-DD HH24:MI:SS'}
542
- @conn.execute "alter session set nls_timestamp_format = 'DD-MON-YYYY HH24:MI:SS'"
543
- end
544
-
545
- after(:all) do
546
- @conn.execute "DROP TABLE test_employees"
547
- @conn.execute "DROP SEQUENCE test_employees_seq"
548
- end
549
-
550
- before(:each) do
551
- class ::TestEmployee < ActiveRecord::Base
552
- self.primary_key = "employee_id"
553
- end
554
- @today = Date.new(2008, 6, 28)
555
- @now = Time.local(2008, 6, 28, 13, 34, 33)
556
- end
557
-
558
- after(:each) do
559
- Object.send(:remove_const, "TestEmployee")
560
- ActiveRecord::Base.clear_cache!
561
- ActiveRecord::Base.default_timezone = :utc
562
- end
563
-
564
- def create_test_employee
565
- @employee = TestEmployee.create(
566
- first_name: "First",
567
- last_name: "Last",
568
- hire_date: @today,
569
- created_at: @now,
570
- created_at_ts: @now
571
- )
572
- @employee.reload
573
- end
574
-
575
- it "should return Time value from DATE column if emulate_dates_by_column_name is false" do
576
- ActiveRecord::Base.default_timezone = :local
577
- class ::TestEmployee < ActiveRecord::Base
578
- attribute :hire_date, :datetime
579
- end
580
- create_test_employee
581
- expect(@employee.hire_date.class).to eq(Time)
582
- expect(@employee.hire_date).to eq(@today.to_time)
583
- end
584
-
585
- it "should return Date value from DATE column if column name contains 'date' and emulate_dates_by_column_name is true" do
586
- create_test_employee
587
- expect(@employee.hire_date.class).to eq(Date)
588
- expect(@employee.hire_date).to eq(@today)
589
- end
590
-
591
- it "should return Time value from DATE column if column name does not contain 'date' and emulate_dates_by_column_name is true" do
592
- class ::TestEmployee < ActiveRecord::Base
593
- attribute :created_at, :datetime
594
- end
595
- create_test_employee
596
- expect(@employee.created_at.class).to eq(Time)
597
- expect(@employee.created_at).to eq(@now)
598
- end
599
-
600
- it "should return Time value from TIMESTAMP columns" do
601
- create_test_employee
602
- expect(@employee.created_at_ts.class).to eq(Time)
603
- expect(@employee.created_at_ts).to eq(@now)
604
- end
605
-
606
- end
607
-
608
514
  describe "OracleEnhancedAdapter assign string to :date and :datetime columns" do
609
515
  before(:all) do
610
516
  ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
@@ -1333,9 +1239,14 @@ describe "OracleEnhancedAdapter handling of BINARY_FLOAT columns" do
1333
1239
  CREATE SEQUENCE test2_employees_seq MINVALUE 1
1334
1240
  INCREMENT BY 1 START WITH 10040 CACHE 20 NOORDER NOCYCLE
1335
1241
  SQL
1242
+
1243
+ class ::Test2Employee < ActiveRecord::Base
1244
+ end
1336
1245
  end
1337
1246
 
1338
1247
  after(:all) do
1248
+ Object.send(:remove_const, "Test2Employee")
1249
+
1339
1250
  @conn.execute "DROP TABLE test2_employees"
1340
1251
  @conn.execute "DROP SEQUENCE test2_employees_seq"
1341
1252
  end
@@ -1345,13 +1256,21 @@ describe "OracleEnhancedAdapter handling of BINARY_FLOAT columns" do
1345
1256
  column = columns.detect { |c| c.name == "hourly_rate" }
1346
1257
  expect(column.type).to eq(:float)
1347
1258
  end
1259
+
1260
+ it "should BINARY_FLOAT column type returns an approximate value" do
1261
+ employee = Test2Employee.create(hourly_rate: 4.4)
1262
+
1263
+ employee.reload
1264
+
1265
+ expect(employee.hourly_rate).to eq(4.400000095367432)
1266
+ end
1348
1267
  end
1349
1268
 
1350
1269
  describe "OracleEnhancedAdapter attribute API support for JSON type" do
1351
1270
 
1352
1271
  include SchemaSpecHelper
1353
1272
 
1354
- before(:each) do
1273
+ before(:all) do
1355
1274
  @conn = ActiveRecord::Base.connection
1356
1275
  @oracle12c_or_higher = !! @conn.select_value(
1357
1276
  "select * from product_component_version where product like 'Oracle%' and to_number(substr(version,1,2)) >= 12")
@@ -1362,27 +1281,27 @@ describe "OracleEnhancedAdapter attribute API support for JSON type" do
1362
1281
  t.string :title
1363
1282
  t.text :article
1364
1283
  end
1284
+ execute "alter table test_posts add constraint test_posts_title_is_json check (title is json)"
1285
+ execute "alter table test_posts add constraint test_posts_article_is_json check (article is json)"
1365
1286
  end
1366
- @conn.execute <<-SQL
1367
- alter table test_posts add constraint test_posts_title_is_json check (title is json)
1368
- SQL
1369
- @conn.execute <<-SQL
1370
- alter table test_posts add constraint test_posts_article_is_json check (article is json)
1371
- SQL
1372
1287
 
1373
- class TestPost < ActiveRecord::Base
1288
+ class ::TestPost < ActiveRecord::Base
1374
1289
  attribute :title, :json
1375
1290
  attribute :article, :json
1376
1291
  end
1377
1292
  end
1378
1293
 
1379
- after(:each) do
1294
+ after(:all) do
1380
1295
  ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
1381
1296
  schema_define do
1382
1297
  drop_table :test_posts, if_exists: true
1383
1298
  end
1384
1299
  end
1385
1300
 
1301
+ before(:each) do
1302
+ TestPost.delete_all
1303
+ end
1304
+
1386
1305
  it "should support attribute api for JSON" do
1387
1306
  post = TestPost.create!(title: { "publish" => true, "foo" => "bar" }, article: { "bar" => "baz" })
1388
1307
  post.reload
@@ -0,0 +1,11 @@
1
+ # copy this file to spec/config.yaml and set appropriate values
2
+ # you can also use environment variables, see spec_helper.rb
3
+ database:
4
+ name: 'orcl'
5
+ host: '127.0.0.1'
6
+ port: 1521
7
+ user: 'oracle_enhanced'
8
+ password: 'oracle_enhanced'
9
+ sys_password: 'admin'
10
+ non_default_tablespace: 'SYSTEM'
11
+ timezone: 'Europe/Riga'
@@ -0,0 +1,2 @@
1
+ alter user sys identified by admin;
2
+ alter user system identified by admin;
@@ -0,0 +1,31 @@
1
+ alter database default tablespace USERS;
2
+
3
+ CREATE USER oracle_enhanced IDENTIFIED BY oracle_enhanced;
4
+
5
+ GRANT unlimited tablespace, create session, create table, create sequence,
6
+ create procedure, create trigger, create view, create materialized view,
7
+ create database link, create synonym, create type, ctxapp TO oracle_enhanced;
8
+
9
+ CREATE USER oracle_enhanced_schema IDENTIFIED BY oracle_enhanced_schema;
10
+
11
+ GRANT unlimited tablespace, create session, create table, create sequence,
12
+ create procedure, create trigger, create view, create materialized view,
13
+ create database link, create synonym, create type, ctxapp TO oracle_enhanced_schema;
14
+
15
+ CREATE USER arunit IDENTIFIED BY arunit;
16
+
17
+ GRANT unlimited tablespace, create session, create table, create sequence,
18
+ create procedure, create trigger, create view, create materialized view,
19
+ create database link, create synonym, create type, ctxapp TO arunit;
20
+
21
+ CREATE USER arunit2 IDENTIFIED BY arunit2;
22
+
23
+ GRANT unlimited tablespace, create session, create table, create sequence,
24
+ create procedure, create trigger, create view, create materialized view,
25
+ create database link, create synonym, create type, ctxapp TO arunit2;
26
+
27
+ CREATE USER ruby IDENTIFIED BY oci8;
28
+ GRANT connect, resource, create view,create synonym TO ruby;
29
+ GRANT EXECUTE ON dbms_lock TO ruby;
30
+ GRANT CREATE VIEW TO ruby;
31
+ GRANT unlimited tablespace to ruby;
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-oracle_enhanced-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0.rc1
4
+ version: 1.8.0.rc2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raimonds Simanovskis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-20 00:00:00.000000000 Z
11
+ date: 2017-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -61,15 +61,9 @@ extensions: []
61
61
  extra_rdoc_files:
62
62
  - README.md
63
63
  files:
64
- - ".rspec"
65
- - Gemfile
66
64
  - History.md
67
65
  - License.txt
68
66
  - README.md
69
- - RUNNING_TESTS.md
70
- - Rakefile
71
- - VERSION
72
- - activerecord-oracle_enhanced-adapter.gemspec
73
67
  - lib/active_record/connection_adapters/emulation/oracle_adapter.rb
74
68
  - lib/active_record/connection_adapters/oracle_enhanced/column.rb
75
69
  - lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
@@ -98,6 +92,7 @@ files:
98
92
  - lib/active_record/oracle_enhanced/type/raw.rb
99
93
  - lib/active_record/oracle_enhanced/type/string.rb
100
94
  - lib/active_record/oracle_enhanced/type/text.rb
95
+ - lib/active_record/oracle_enhanced/type/timestamptz.rb
101
96
  - lib/activerecord-oracle_enhanced-adapter.rb
102
97
  - spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb
103
98
  - spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb
@@ -111,7 +106,10 @@ files:
111
106
  - spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb
112
107
  - spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb
113
108
  - spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb
109
+ - spec/spec_config.yaml.template
114
110
  - spec/spec_helper.rb
111
+ - spec/support/alter_system_user_password.sql
112
+ - spec/support/create_oracle_enhanced_users.sql
115
113
  homepage: http://github.com/rsim/oracle-enhanced
116
114
  licenses:
117
115
  - MIT
@@ -132,21 +130,24 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
130
  version: 1.8.11
133
131
  requirements: []
134
132
  rubyforge_project:
135
- rubygems_version: 2.6.10
133
+ rubygems_version: 2.6.11
136
134
  signing_key:
137
135
  specification_version: 4
138
136
  summary: Oracle enhanced adapter for ActiveRecord
139
137
  test_files:
140
- - spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb
138
+ - spec/spec_config.yaml.template
139
+ - spec/spec_helper.rb
140
+ - spec/support/create_oracle_enhanced_users.sql
141
+ - spec/support/alter_system_user_password.sql
142
+ - spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb
143
+ - spec/active_record/connection_adapters/oracle_enhanced_database_tasks_spec.rb
141
144
  - spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb
142
145
  - spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb
143
- - spec/active_record/connection_adapters/oracle_enhanced_database_tasks_spec.rb
144
- - spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb
146
+ - spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb
145
147
  - spec/active_record/connection_adapters/oracle_enhanced_dbms_output_spec.rb
146
- - spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb
148
+ - spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb
147
149
  - spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb
148
150
  - spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb
149
- - spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb
150
151
  - spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb
151
- - spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb
152
- - spec/spec_helper.rb
152
+ - spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb
153
+ - spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb
data/.rspec DELETED
@@ -1,4 +0,0 @@
1
- --color
2
- --backtrace
3
- --require spec_helper
4
- --warnings
data/Gemfile DELETED
@@ -1,29 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- git_source(:github) do |repo_name|
4
- repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
5
- "https://github.com/#{repo_name}.git"
6
- end
7
-
8
- group :development do
9
- gem "rspec"
10
- gem "rdoc"
11
- gem "rake"
12
-
13
- gem "activerecord", github: "rails/rails", branch: "5-1-stable"
14
- gem "ruby-plsql", github: "rsim/ruby-plsql", branch: "master"
15
-
16
- platforms :ruby do
17
- gem "ruby-oci8", github: "kubo/ruby-oci8"
18
- gem "byebug"
19
- end
20
-
21
- platforms :jruby do
22
- gem "pry"
23
- gem "pry-nav"
24
- end
25
- end
26
-
27
- group :test do
28
- gem "simplecov", github: "colszowka/simplecov", branch: "master", require: false
29
- end
@@ -1,109 +0,0 @@
1
- [![Build Status](https://travis-ci.org/rsim/oracle-enhanced.svg?branch=master)](https://travis-ci.org/rsim/oracle-enhanced)
2
-
3
- # When and Which tests need to be executed
4
-
5
- When you are creating a fix and/or some new features for Oracle enhanced adapter,
6
- It is recommended to execute Oracle enhanced adapter unit tests and ActiveRecord unit tests.
7
-
8
- * Oracle enhanced adapter unit test
9
- * ActiveRecord unit test
10
-
11
- This document explains how to prepare and execute Oracle enhanced adapter unit test.
12
- For ActiveRecord unit test, please refer [Contributing to Ruby on Rails](http://edgeguides.rubyonrails.org/contributing_to_ruby_on_rails.html) .
13
-
14
- This document talks about developing Oracle enhanced adapter itself, does NOT talk about developing Rails applications using Oracle enhanced adapter.
15
-
16
- # Building development and test environment
17
-
18
- You can create Oracle enhanced adapter development and test environment by following one of them. If you are first to create this environment
19
- [rails-dev-box runs_oracle branch](https://github.com/yahonda/rails-dev-box/tree/runs_oracle) is recommended.
20
-
21
- ## [rails-dev-box runs_oracle branch](https://github.com/yahonda/rails-dev-box/tree/runs_oracle)
22
- * Please follow the [README](https://github.com/yahonda/rails-dev-box/tree/runs_oracle#a-virtual-machine-for-ruby-on-rails-core-development-with-oracle-database) .
23
-
24
- ## [rails-dev-box runs_oracle_on_docker branch](https://github.com/yahonda/rails-dev-box/tree/runs_oracle_on_docker)
25
- * Please follow the [README](https://github.com/yahonda/rails-dev-box/blob/runs_oracle_on_docker/README.md#a-virtual-machine-for-ruby-on-rails-core-development) .
26
-
27
- ## Create by yourself
28
- You can create your development and test environment by yourself.
29
-
30
- ### Install Ruby
31
- Install Ruby 2.2.2 or higher version of Ruby and JRuby 9.0.5 or higher. To switch multiple version of ruby, you can use use [ruby-build](https://github.com/rbenv/ruby-build) or [Ruby Version Manager(RVM)](https://rvm.io/).
32
-
33
- ### Creating the test database
34
- To test Oracle enhanced adapter Oracle database is necesssary. You can build by your own or use the Docker to run pre-build Oracle Database Express Edition 11g Release 2.
35
-
36
- #### Create database by yourself
37
- Oracle database 11.2 or later with SYS and SYSTEM user access. AL32UTF8 database character set is recommended.
38
-
39
- #### Docker
40
- If no Oracle database with SYS and SYSTEM user access is available, try the docker approach.
41
-
42
- * Install [Docker](https://docker.github.io/engine/installation/)
43
-
44
- * Pull [docker-oracle-xe-11g](https://hub.docker.com/r/wnameless/oracle-xe-11g/) image from docker hub
45
- ```sh
46
- $ docker pull wnameless/oracle-xe-11g
47
- ```
48
-
49
- * Start a Oracle database docker container with mapped ports. Use port `49161` to access the database.
50
- ```sh
51
- $ docker run -d -p 49160:22 -p 49161:1521 wnameless/oracle-xe-11g
52
- ```
53
-
54
- * Check connection to the database with `sqlplus`. The user is `system`, the password is `oracle`.
55
- ```sh
56
- $ sqlplus64 system/oracle@localhost:49161
57
- ```
58
-
59
-
60
- ### Creating database schemas at the test database
61
-
62
- * 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)
63
-
64
- ```sql
65
- SQL> CREATE USER oracle_enhanced IDENTIFIED BY oracle_enhanced;
66
- 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;
67
-
68
- SQL> CREATE USER oracle_enhanced_schema IDENTIFIED BY oracle_enhanced_schema;
69
- 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_schema;
70
- ```
71
-
72
- ### Configure database login credentials
73
-
74
- * Configure database credentials in one of two ways:
75
- * copy `spec/spec_config.yaml.template` to `spec/spec_config.yaml` and modify as needed
76
- * set required environment variables (see DATABASE_NAME in spec_helper.rb)
77
-
78
- * The oracle enhanced configuration file `spec/spec_config.yaml` should look like:
79
-
80
- ```yaml
81
- # copy this file to spec/config.yaml and set appropriate values
82
- # you can also use environment variables, see spec_helper.rb
83
- database:
84
- name: 'xe'
85
- host: 'localhost'
86
- port: 49161
87
- user: 'oracle_enhanced'
88
- password: 'oracle_enhanced'
89
- sys_password: 'oracle'
90
- non_default_tablespace: 'SYSTEM'
91
- timezone: 'Europe/Riga'
92
- ```
93
-
94
- # Running Oracle enhanced adapter unit tests
95
-
96
- * Install bundler
97
- ```sh
98
- $ gem install bundler
99
- ```
100
-
101
- * Execute bundle install to install required gems
102
- ```sh
103
- $ bundle install
104
- ```
105
-
106
- * Run Oracle enhanced adapter unit tests
107
- ```sh
108
- $ bundle exec rake spec
109
- ```
data/Rakefile DELETED
@@ -1,39 +0,0 @@
1
- require "rubygems"
2
- require "bundler"
3
- require "bundler/gem_tasks"
4
- begin
5
- Bundler.setup(:default, :development)
6
- rescue Bundler::BundlerError => e
7
- $stderr.puts e.message
8
- $stderr.puts "Run `bundle install` to install missing gems"
9
- exit e.status_code
10
- end
11
-
12
- require "rake"
13
-
14
- require "rspec/core/rake_task"
15
- RSpec::Core::RakeTask.new(:spec)
16
-
17
- desc "Clear test database"
18
- task :clear do
19
- require "./spec/spec_helper"
20
- ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
21
- require "active_support/core_ext"
22
- ActiveRecord::Base.connection.execute_structure_dump(ActiveRecord::Base.connection.full_drop)
23
- ActiveRecord::Base.connection.execute("PURGE RECYCLEBIN") rescue nil
24
- end
25
-
26
- # Clear test database before running spec
27
- task spec: :clear
28
-
29
- task default: :spec
30
-
31
- require "rdoc/task"
32
- Rake::RDocTask.new do |rdoc|
33
- version = File.exist?("VERSION") ? File.read("VERSION") : ""
34
-
35
- rdoc.rdoc_dir = "doc"
36
- rdoc.title = "activerecord-oracle_enhanced-adapter #{version}"
37
- rdoc.rdoc_files.include("README*")
38
- rdoc.rdoc_files.include("lib/**/*.rb")
39
- end
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 1.8.0.rc1
@@ -1,91 +0,0 @@
1
- Gem::Specification.new do |s|
2
- s.name = "activerecord-oracle_enhanced-adapter"
3
- s.version = "1.8.0.rc1"
4
-
5
- s.required_rubygems_version = ">= 1.8.11"
6
- s.required_ruby_version = ">= 2.2.2"
7
- s.license = "MIT"
8
- s.authors = ["Raimonds Simanovskis"]
9
- s.date = "2017-03-20"
10
- s.description = 'Oracle "enhanced" ActiveRecord adapter contains useful additional methods for working with new and legacy Oracle databases.
11
- This adapter is superset of original ActiveRecord Oracle adapter.
12
- '
13
- s.email = "raimonds.simanovskis@gmail.com"
14
- s.extra_rdoc_files = [
15
- "README.md"
16
- ]
17
- s.files = [
18
- ".rspec",
19
- "Gemfile",
20
- "History.md",
21
- "License.txt",
22
- "README.md",
23
- "RUNNING_TESTS.md",
24
- "Rakefile",
25
- "VERSION",
26
- "activerecord-oracle_enhanced-adapter.gemspec",
27
- "lib/active_record/connection_adapters/emulation/oracle_adapter.rb",
28
- "lib/active_record/connection_adapters/oracle_enhanced_adapter.rb",
29
- "lib/active_record/connection_adapters/oracle_enhanced/column.rb",
30
- "lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb",
31
- "lib/active_record/connection_adapters/oracle_enhanced/connection.rb",
32
- "lib/active_record/connection_adapters/oracle_enhanced/context_index.rb",
33
- "lib/active_record/connection_adapters/oracle_enhanced/database_statements.rb",
34
- "lib/active_record/connection_adapters/oracle_enhanced/database_tasks.rb",
35
- "lib/active_record/connection_adapters/oracle_enhanced/jdbc_connection.rb",
36
- "lib/active_record/connection_adapters/oracle_enhanced/jdbc_quoting.rb",
37
- "lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb",
38
- "lib/active_record/connection_adapters/oracle_enhanced/oci_quoting.rb",
39
- "lib/active_record/connection_adapters/oracle_enhanced/procedures.rb",
40
- "lib/active_record/connection_adapters/oracle_enhanced/quoting.rb",
41
- "lib/active_record/connection_adapters/oracle_enhanced/schema_creation.rb",
42
- "lib/active_record/connection_adapters/oracle_enhanced/schema_definitions.rb",
43
- "lib/active_record/connection_adapters/oracle_enhanced/schema_dumper.rb",
44
- "lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb",
45
- "lib/active_record/connection_adapters/oracle_enhanced/schema_statements_ext.rb",
46
- "lib/active_record/connection_adapters/oracle_enhanced/structure_dump.rb",
47
- "lib/active_record/connection_adapters/oracle_enhanced/version.rb",
48
- "lib/active_record/oracle_enhanced/type/boolean.rb",
49
- "lib/active_record/oracle_enhanced/type/integer.rb",
50
- "lib/active_record/oracle_enhanced/type/json.rb",
51
- "lib/active_record/oracle_enhanced/type/national_character_string.rb",
52
- "lib/active_record/oracle_enhanced/type/raw.rb",
53
- "lib/active_record/oracle_enhanced/type/string.rb",
54
- "lib/active_record/oracle_enhanced/type/text.rb",
55
- "lib/activerecord-oracle_enhanced-adapter.rb",
56
- "spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb",
57
- "spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb",
58
- "spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb",
59
- "spec/active_record/connection_adapters/oracle_enhanced_database_tasks_spec.rb",
60
- "spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb",
61
- "spec/active_record/connection_adapters/oracle_enhanced_dbms_output_spec.rb",
62
- "spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb",
63
- "spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb",
64
- "spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb",
65
- "spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb",
66
- "spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb",
67
- "spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb",
68
- "spec/spec_helper.rb"
69
- ]
70
- s.homepage = "http://github.com/rsim/oracle-enhanced"
71
- s.require_paths = ["lib"]
72
- s.summary = "Oracle enhanced adapter for ActiveRecord"
73
- s.test_files = [
74
- "spec/active_record/connection_adapters/oracle_enhanced_adapter_spec.rb",
75
- "spec/active_record/connection_adapters/oracle_enhanced_connection_spec.rb",
76
- "spec/active_record/connection_adapters/oracle_enhanced_context_index_spec.rb",
77
- "spec/active_record/connection_adapters/oracle_enhanced_database_tasks_spec.rb",
78
- "spec/active_record/connection_adapters/oracle_enhanced_data_types_spec.rb",
79
- "spec/active_record/connection_adapters/oracle_enhanced_dbms_output_spec.rb",
80
- "spec/active_record/connection_adapters/oracle_enhanced_dirty_spec.rb",
81
- "spec/active_record/connection_adapters/oracle_enhanced_emulate_oracle_adapter_spec.rb",
82
- "spec/active_record/connection_adapters/oracle_enhanced_procedures_spec.rb",
83
- "spec/active_record/connection_adapters/oracle_enhanced_schema_dump_spec.rb",
84
- "spec/active_record/connection_adapters/oracle_enhanced_schema_statements_spec.rb",
85
- "spec/active_record/connection_adapters/oracle_enhanced_structure_dump_spec.rb",
86
- "spec/spec_helper.rb"
87
- ]
88
- s.add_runtime_dependency("activerecord", ["~> 5.1.0.rc"])
89
- s.add_runtime_dependency("arel", ["~> 8.0"])
90
- s.add_runtime_dependency("ruby-plsql", [">= 0.6.0"])
91
- end