ruby-plsql 0.4.4 → 0.5.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/Gemfile +9 -9
- data/History.txt +14 -0
- data/License.txt +1 -1
- data/README.md +182 -0
- data/Rakefile +25 -30
- data/VERSION +1 -1
- data/lib/plsql/connection.rb +1 -1
- data/lib/plsql/jdbc_connection.rb +20 -12
- data/lib/plsql/oci_connection.rb +1 -2
- data/lib/plsql/procedure.rb +13 -7
- data/lib/plsql/procedure_call.rb +3 -1
- data/ruby-plsql.gemspec +63 -77
- data/spec/plsql/connection_spec.rb +16 -10
- data/spec/plsql/procedure_spec.rb +353 -35
- data/spec/plsql/schema_spec.rb +15 -0
- data/spec/plsql/variable_spec.rb +45 -19
- data/spec/spec_helper.rb +3 -13
- metadata +76 -95
- data/.gitignore +0 -11
- data/README.rdoc +0 -158
data/spec/plsql/schema_spec.rb
CHANGED
@@ -178,6 +178,11 @@ end
|
|
178
178
|
describe "ActiveRecord connection" do
|
179
179
|
before(:all) do
|
180
180
|
ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
|
181
|
+
class TestBaseModel < ActiveRecord::Base
|
182
|
+
self.abstract_class = true
|
183
|
+
end
|
184
|
+
class TestModel < TestBaseModel
|
185
|
+
end
|
181
186
|
end
|
182
187
|
|
183
188
|
before(:each) do
|
@@ -204,6 +209,16 @@ describe "ActiveRecord connection" do
|
|
204
209
|
it "should have the same connection as default schema" do
|
205
210
|
plsql.hr.connection.should == plsql.connection
|
206
211
|
end
|
212
|
+
|
213
|
+
it "should accept inherited ActiveRecord class" do
|
214
|
+
plsql.activerecord_class = TestBaseModel
|
215
|
+
plsql.schema_name.should == 'HR'
|
216
|
+
end
|
217
|
+
|
218
|
+
it "should accept subclass of inherited ActiveRecord class" do
|
219
|
+
plsql.activerecord_class = TestModel
|
220
|
+
plsql.schema_name.should == 'HR'
|
221
|
+
end
|
207
222
|
end if defined?(ActiveRecord)
|
208
223
|
|
209
224
|
describe "DBMS_OUTPUT logging" do
|
data/spec/plsql/variable_spec.rb
CHANGED
@@ -4,16 +4,9 @@ require 'spec_helper'
|
|
4
4
|
|
5
5
|
describe "Package variables /" do
|
6
6
|
|
7
|
-
before(:all) do
|
8
|
-
plsql.connect! CONNECTION_PARAMS
|
9
|
-
end
|
10
|
-
|
11
|
-
after(:all) do
|
12
|
-
plsql.logoff
|
13
|
-
end
|
14
|
-
|
15
7
|
describe "String" do
|
16
8
|
before(:all) do
|
9
|
+
plsql.connect! CONNECTION_PARAMS
|
17
10
|
plsql.execute <<-SQL
|
18
11
|
CREATE OR REPLACE PACKAGE test_package IS
|
19
12
|
varchar2_variable VARCHAR2(50);
|
@@ -37,6 +30,7 @@ describe "Package variables /" do
|
|
37
30
|
|
38
31
|
after(:all) do
|
39
32
|
plsql.execute "DROP PACKAGE test_package"
|
33
|
+
plsql.logoff
|
40
34
|
end
|
41
35
|
|
42
36
|
it "should set and get VARCHAR2 variable" do
|
@@ -55,17 +49,33 @@ describe "Package variables /" do
|
|
55
49
|
plsql.test_package.varchar2_default3.should == 'default'
|
56
50
|
end
|
57
51
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
52
|
+
describe "with character or byte limit" do
|
53
|
+
before(:each) do
|
54
|
+
if !defined?(JRUBY_VERSION) && OCI8.properties.has_key?(:length_semantics)
|
55
|
+
@original_length_semantics = OCI8.properties[:length_semantics]
|
56
|
+
OCI8.properties[:length_semantics] = :char
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
after(:each) do
|
61
|
+
if !defined?(JRUBY_VERSION) && OCI8.properties.has_key?(:length_semantics)
|
62
|
+
OCI8.properties[:length_semantics] = @original_length_semantics
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should set and get VARCHAR2(n CHAR) variable" do
|
67
|
+
plsql.test_package.varchar2_3_char = 'āčē'
|
68
|
+
plsql.test_package.varchar2_3_char.should == 'āčē'
|
69
|
+
lambda { plsql.test_package.varchar2_3_char = 'aceg' }.should raise_error(/buffer too small/)
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should set and get VARCHAR2(n BYTE) variable" do
|
73
|
+
plsql.test_package.varchar2_3_byte = 'ace'
|
74
|
+
plsql.test_package.varchar2_3_byte.should == 'ace'
|
75
|
+
lambda { plsql.test_package.varchar2_3_byte = 'āce' }.should raise_error(/buffer too small/)
|
76
|
+
lambda { plsql.test_package.varchar2_3_byte = 'aceg' }.should raise_error(/buffer too small/)
|
77
|
+
end
|
63
78
|
|
64
|
-
it "should set and get VARCHAR2(n BYTE) variable" do
|
65
|
-
plsql.test_package.varchar2_3_byte = 'ace'
|
66
|
-
plsql.test_package.varchar2_3_byte.should == 'ace'
|
67
|
-
lambda { plsql.test_package.varchar2_3_byte = 'āce' }.should raise_error(/buffer too small/)
|
68
|
-
lambda { plsql.test_package.varchar2_3_byte = 'aceg' }.should raise_error(/buffer too small/)
|
69
79
|
end
|
70
80
|
|
71
81
|
it "should set and get CHAR variable" do
|
@@ -87,6 +97,7 @@ describe "Package variables /" do
|
|
87
97
|
|
88
98
|
describe "Numeric" do
|
89
99
|
before(:all) do
|
100
|
+
plsql.connect! CONNECTION_PARAMS
|
90
101
|
plsql.execute <<-SQL
|
91
102
|
CREATE OR REPLACE PACKAGE test_package IS
|
92
103
|
integer_variable INTEGER;
|
@@ -107,6 +118,7 @@ describe "Package variables /" do
|
|
107
118
|
|
108
119
|
after(:all) do
|
109
120
|
plsql.execute "DROP PACKAGE test_package"
|
121
|
+
plsql.logoff
|
110
122
|
end
|
111
123
|
|
112
124
|
it "should set and get INTEGER variable" do
|
@@ -152,6 +164,7 @@ describe "Package variables /" do
|
|
152
164
|
|
153
165
|
describe "Date and Time" do
|
154
166
|
before(:all) do
|
167
|
+
plsql.connect! CONNECTION_PARAMS
|
155
168
|
plsql.execute <<-SQL
|
156
169
|
CREATE OR REPLACE PACKAGE test_package IS
|
157
170
|
date_variable DATE;
|
@@ -171,6 +184,7 @@ describe "Package variables /" do
|
|
171
184
|
|
172
185
|
after(:all) do
|
173
186
|
plsql.execute "DROP PACKAGE test_package"
|
187
|
+
plsql.logoff
|
174
188
|
end
|
175
189
|
|
176
190
|
it "should set and get DATE variable" do
|
@@ -205,6 +219,7 @@ describe "Package variables /" do
|
|
205
219
|
|
206
220
|
describe "LOB" do
|
207
221
|
before(:all) do
|
222
|
+
plsql.connect! CONNECTION_PARAMS
|
208
223
|
plsql.execute <<-SQL
|
209
224
|
CREATE OR REPLACE PACKAGE test_package IS
|
210
225
|
clob_variable CLOB;
|
@@ -222,6 +237,7 @@ describe "Package variables /" do
|
|
222
237
|
|
223
238
|
after(:all) do
|
224
239
|
plsql.execute "DROP PACKAGE test_package"
|
240
|
+
plsql.logoff
|
225
241
|
end
|
226
242
|
|
227
243
|
it "should set and get CLOB variable" do
|
@@ -247,6 +263,7 @@ describe "Package variables /" do
|
|
247
263
|
|
248
264
|
describe "table column type" do
|
249
265
|
before(:all) do
|
266
|
+
plsql.connect! CONNECTION_PARAMS
|
250
267
|
plsql.execute <<-SQL
|
251
268
|
CREATE TABLE test_employees (
|
252
269
|
employee_id NUMBER(15),
|
@@ -273,6 +290,7 @@ describe "Package variables /" do
|
|
273
290
|
after(:all) do
|
274
291
|
plsql.execute "DROP PACKAGE test_package"
|
275
292
|
plsql.execute "DROP TABLE test_employees"
|
293
|
+
plsql.logoff
|
276
294
|
end
|
277
295
|
|
278
296
|
it "should set and get NUMBER variable" do
|
@@ -295,6 +313,7 @@ describe "Package variables /" do
|
|
295
313
|
|
296
314
|
describe "constants" do
|
297
315
|
before(:all) do
|
316
|
+
plsql.connect! CONNECTION_PARAMS
|
298
317
|
plsql.execute <<-SQL
|
299
318
|
CREATE OR REPLACE PACKAGE test_package IS
|
300
319
|
integer_constant CONSTANT NUMBER(1) := 1;
|
@@ -310,6 +329,7 @@ describe "Package variables /" do
|
|
310
329
|
|
311
330
|
after(:all) do
|
312
331
|
plsql.execute "DROP PACKAGE test_package"
|
332
|
+
plsql.logoff
|
313
333
|
end
|
314
334
|
|
315
335
|
it "should get NUMBER constant" do
|
@@ -330,6 +350,7 @@ describe "Package variables /" do
|
|
330
350
|
|
331
351
|
describe "object type" do
|
332
352
|
before(:all) do
|
353
|
+
plsql.connect! CONNECTION_PARAMS
|
333
354
|
plsql.execute "DROP TYPE t_employee" rescue nil
|
334
355
|
plsql.execute "DROP TYPE t_phones" rescue nil
|
335
356
|
plsql.execute <<-SQL
|
@@ -388,6 +409,7 @@ describe "Package variables /" do
|
|
388
409
|
plsql.execute "DROP TYPE t_address"
|
389
410
|
plsql.execute "DROP TYPE t_phones"
|
390
411
|
plsql.execute "DROP TYPE t_phone"
|
412
|
+
plsql.logoff
|
391
413
|
end
|
392
414
|
|
393
415
|
it "should set and get object type variable" do
|
@@ -409,6 +431,7 @@ describe "Package variables /" do
|
|
409
431
|
|
410
432
|
describe "table row type" do
|
411
433
|
before(:all) do
|
434
|
+
plsql.connect! CONNECTION_PARAMS
|
412
435
|
plsql.execute <<-SQL
|
413
436
|
CREATE TABLE test_employees (
|
414
437
|
employee_id NUMBER(15),
|
@@ -439,6 +462,7 @@ describe "Package variables /" do
|
|
439
462
|
after(:all) do
|
440
463
|
plsql.execute "DROP PACKAGE test_package"
|
441
464
|
plsql.execute "DROP TABLE test_employees"
|
465
|
+
plsql.logoff
|
442
466
|
end
|
443
467
|
|
444
468
|
it "should set and get table ROWTYPE variable" do
|
@@ -450,6 +474,7 @@ describe "Package variables /" do
|
|
450
474
|
|
451
475
|
describe "booleans" do
|
452
476
|
before(:all) do
|
477
|
+
plsql.connect! CONNECTION_PARAMS
|
453
478
|
plsql.execute <<-SQL
|
454
479
|
CREATE OR REPLACE PACKAGE test_package IS
|
455
480
|
boolean_variable BOOLEAN;
|
@@ -464,6 +489,7 @@ describe "Package variables /" do
|
|
464
489
|
|
465
490
|
after(:all) do
|
466
491
|
plsql.execute "DROP PACKAGE test_package"
|
492
|
+
plsql.logoff
|
467
493
|
end
|
468
494
|
|
469
495
|
it "should set and get BOOLEAN variable" do
|
@@ -476,4 +502,4 @@ describe "Package variables /" do
|
|
476
502
|
|
477
503
|
end
|
478
504
|
|
479
|
-
end
|
505
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,20 +1,10 @@
|
|
1
1
|
require "rubygems"
|
2
|
-
|
3
|
-
|
4
|
-
gemfile = File.expand_path('../../Gemfile', __FILE__)
|
5
|
-
begin
|
6
|
-
ENV['BUNDLE_GEMFILE'] = gemfile
|
7
|
-
require 'bundler'
|
8
|
-
Bundler.setup
|
9
|
-
rescue Bundler::GemNotFound => e
|
10
|
-
STDERR.puts e.message
|
11
|
-
STDERR.puts "Try running `bundle install`."
|
12
|
-
exit!
|
13
|
-
end if File.exist?(gemfile)
|
2
|
+
require "bundler"
|
3
|
+
Bundler.setup(:default, :development)
|
14
4
|
|
15
5
|
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
16
6
|
|
17
|
-
require '
|
7
|
+
require 'rspec'
|
18
8
|
|
19
9
|
unless ENV['NO_ACTIVERECORD']
|
20
10
|
require 'active_record'
|
metadata
CHANGED
@@ -1,89 +1,89 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-plsql
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 4
|
9
|
-
- 4
|
10
|
-
version: 0.4.4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.0
|
5
|
+
prerelease:
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Raimonds Simanovskis
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
12
|
+
date: 2012-04-16 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: jeweler
|
16
|
+
requirement: &2161503140 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.8.3
|
22
|
+
type: :development
|
23
23
|
prerelease: false
|
24
|
-
|
24
|
+
version_requirements: *2161503140
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &2161502660 !ruby/object:Gem::Requirement
|
25
28
|
none: false
|
26
|
-
requirements:
|
29
|
+
requirements:
|
27
30
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 3
|
33
|
-
- 0
|
34
|
-
version: 1.3.0
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.9'
|
35
33
|
type: :development
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: activerecord
|
39
34
|
prerelease: false
|
40
|
-
|
35
|
+
version_requirements: *2161502660
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: activerecord
|
38
|
+
requirement: &2161502180 !ruby/object:Gem::Requirement
|
41
39
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
|
46
|
-
segments:
|
47
|
-
- 2
|
48
|
-
- 3
|
49
|
-
- 8
|
50
|
-
version: 2.3.8
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 3.2.3
|
51
44
|
type: :development
|
52
|
-
version_requirements: *id002
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: activerecord-oracle_enhanced-adapter
|
55
45
|
prerelease: false
|
56
|
-
|
46
|
+
version_requirements: *2161502180
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: activerecord-oracle_enhanced-adapter
|
49
|
+
requirement: &2161501700 !ruby/object:Gem::Requirement
|
57
50
|
none: false
|
58
|
-
requirements:
|
51
|
+
requirements:
|
59
52
|
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
|
62
|
-
segments:
|
63
|
-
- 1
|
64
|
-
- 3
|
65
|
-
- 1
|
66
|
-
version: 1.3.1
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.4.1
|
67
55
|
type: :development
|
68
|
-
|
69
|
-
|
70
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *2161501700
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: ruby-oci8
|
60
|
+
requirement: &2161501220 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *2161501220
|
69
|
+
description: ! 'ruby-plsql gem provides simple Ruby API for calling Oracle PL/SQL
|
70
|
+
procedures.
|
71
|
+
|
71
72
|
It could be used both for accessing Oracle PL/SQL API procedures in legacy applications
|
73
|
+
|
72
74
|
as well as it could be used to create PL/SQL unit tests using Ruby testing libraries.
|
73
75
|
|
76
|
+
'
|
74
77
|
email: raimonds.simanovskis@gmail.com
|
75
78
|
executables: []
|
76
|
-
|
77
79
|
extensions: []
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
files:
|
82
|
-
- .gitignore
|
80
|
+
extra_rdoc_files:
|
81
|
+
- README.md
|
82
|
+
files:
|
83
83
|
- Gemfile
|
84
84
|
- History.txt
|
85
85
|
- License.txt
|
86
|
-
- README.
|
86
|
+
- README.md
|
87
87
|
- Rakefile
|
88
88
|
- VERSION
|
89
89
|
- lib/plsql/connection.rb
|
@@ -118,50 +118,31 @@ files:
|
|
118
118
|
- spec/plsql/view_spec.rb
|
119
119
|
- spec/spec.opts
|
120
120
|
- spec/spec_helper.rb
|
121
|
-
has_rdoc: true
|
122
121
|
homepage: http://github.com/rsim/ruby-plsql
|
123
122
|
licenses: []
|
124
|
-
|
125
123
|
post_install_message:
|
126
|
-
rdoc_options:
|
127
|
-
|
128
|
-
require_paths:
|
124
|
+
rdoc_options: []
|
125
|
+
require_paths:
|
129
126
|
- lib
|
130
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
131
128
|
none: false
|
132
|
-
requirements:
|
133
|
-
- -
|
134
|
-
- !ruby/object:Gem::Version
|
135
|
-
|
136
|
-
segments:
|
129
|
+
requirements:
|
130
|
+
- - ! '>='
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
segments:
|
137
134
|
- 0
|
138
|
-
|
139
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
135
|
+
hash: 4542773542064598354
|
136
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
140
137
|
none: false
|
141
|
-
requirements:
|
142
|
-
- -
|
143
|
-
- !ruby/object:Gem::Version
|
144
|
-
|
145
|
-
segments:
|
146
|
-
- 0
|
147
|
-
version: "0"
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
148
142
|
requirements: []
|
149
|
-
|
150
143
|
rubyforge_project:
|
151
|
-
rubygems_version: 1.
|
144
|
+
rubygems_version: 1.8.11
|
152
145
|
signing_key:
|
153
146
|
specification_version: 3
|
154
147
|
summary: Ruby API for calling Oracle PL/SQL procedures.
|
155
|
-
test_files:
|
156
|
-
- spec/plsql/connection_spec.rb
|
157
|
-
- spec/plsql/package_spec.rb
|
158
|
-
- spec/plsql/procedure_spec.rb
|
159
|
-
- spec/plsql/schema_spec.rb
|
160
|
-
- spec/plsql/sequence_spec.rb
|
161
|
-
- spec/plsql/sql_statements_spec.rb
|
162
|
-
- spec/plsql/table_spec.rb
|
163
|
-
- spec/plsql/type_spec.rb
|
164
|
-
- spec/plsql/variable_spec.rb
|
165
|
-
- spec/plsql/version_spec.rb
|
166
|
-
- spec/plsql/view_spec.rb
|
167
|
-
- spec/spec_helper.rb
|
148
|
+
test_files: []
|