flash-gordons-ruby-plsql 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.
- checksums.yaml +15 -0
- data/Gemfile +14 -0
- data/History.txt +172 -0
- data/License.txt +20 -0
- data/README.md +182 -0
- data/Rakefile +47 -0
- data/VERSION +1 -0
- data/lib/plsql/connection.rb +233 -0
- data/lib/plsql/helpers.rb +9 -0
- data/lib/plsql/jdbc_connection.rb +542 -0
- data/lib/plsql/oci8_patches.rb +25 -0
- data/lib/plsql/oci_connection.rb +339 -0
- data/lib/plsql/package.rb +80 -0
- data/lib/plsql/procedure.rb +269 -0
- data/lib/plsql/procedure_call.rb +124 -0
- data/lib/plsql/schema.rb +309 -0
- data/lib/plsql/sequence.rb +49 -0
- data/lib/plsql/sql_statements.rb +87 -0
- data/lib/plsql/table.rb +348 -0
- data/lib/plsql/type.rb +275 -0
- data/lib/plsql/variable.rb +146 -0
- data/lib/plsql/version.rb +3 -0
- data/lib/plsql/view.rb +41 -0
- data/lib/ruby-plsql.rb +1 -0
- data/lib/ruby_plsql.rb +18 -0
- data/ruby-plsql.gemspec +87 -0
- data/spec/plsql/connection_spec.rb +495 -0
- data/spec/plsql/package_spec.rb +149 -0
- data/spec/plsql/procedure_spec.rb +2048 -0
- data/spec/plsql/schema_spec.rb +331 -0
- data/spec/plsql/sequence_spec.rb +67 -0
- data/spec/plsql/sql_statements_spec.rb +91 -0
- data/spec/plsql/table_spec.rb +371 -0
- data/spec/plsql/type_spec.rb +304 -0
- data/spec/plsql/variable_spec.rb +505 -0
- data/spec/plsql/version_spec.rb +8 -0
- data/spec/plsql/view_spec.rb +264 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +79 -0
- metadata +159 -0
@@ -0,0 +1,264 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe "View" do
|
4
|
+
before(:all) do
|
5
|
+
plsql.connect! CONNECTION_PARAMS
|
6
|
+
plsql.connection.autocommit = false
|
7
|
+
plsql.execute <<-SQL
|
8
|
+
CREATE TABLE test_employees (
|
9
|
+
employee_id NUMBER(15) NOT NULL,
|
10
|
+
first_name VARCHAR2(50),
|
11
|
+
last_name VARCHAR2(50),
|
12
|
+
hire_date DATE,
|
13
|
+
status VARCHAR2(1) DEFAULT 'N'
|
14
|
+
)
|
15
|
+
SQL
|
16
|
+
plsql.execute "CREATE OR REPLACE VIEW test_employees_v AS SELECT * FROM test_employees"
|
17
|
+
|
18
|
+
@employees = (1..10).map do |i|
|
19
|
+
{
|
20
|
+
:employee_id => i,
|
21
|
+
:first_name => "First #{i}",
|
22
|
+
:last_name => "Last #{i}",
|
23
|
+
:hire_date => Time.local(2000,01,i),
|
24
|
+
:status => 'A'
|
25
|
+
}
|
26
|
+
end
|
27
|
+
@employees_all_fields = [:employee_id, :first_name, :last_name, :hire_date, :status]
|
28
|
+
@employees_all_values = @employees.map{|e| @employees_all_fields.map{|f| e[f]}}
|
29
|
+
@employees_some_fields = [:employee_id, :first_name, :last_name]
|
30
|
+
@employees_some_values = @employees.map{|e| @employees_some_fields.map{|f| e[f]}}
|
31
|
+
@employee_default_values = {:hire_date => nil, :status => 'N'}
|
32
|
+
end
|
33
|
+
|
34
|
+
after(:all) do
|
35
|
+
plsql.execute "DROP VIEW test_employees_v"
|
36
|
+
plsql.execute "DROP TABLE test_employees"
|
37
|
+
plsql.logoff
|
38
|
+
end
|
39
|
+
|
40
|
+
after(:each) do
|
41
|
+
plsql.rollback
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "find" do
|
45
|
+
|
46
|
+
it "should find existing view" do
|
47
|
+
PLSQL::View.find(plsql, :test_employees_v).should_not be_nil
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should not find nonexisting view" do
|
51
|
+
PLSQL::View.find(plsql, :qwerty123456).should be_nil
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should find existing view in schema" do
|
55
|
+
plsql.test_employees_v.should be_instance_of(PLSQL::View)
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
describe "synonym" do
|
61
|
+
|
62
|
+
before(:all) do
|
63
|
+
plsql.execute "CREATE SYNONYM test_employees_v_synonym FOR hr.test_employees_v"
|
64
|
+
end
|
65
|
+
|
66
|
+
after(:all) do
|
67
|
+
plsql.execute "DROP SYNONYM test_employees_v_synonym" rescue nil
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should find synonym to view" do
|
71
|
+
PLSQL::View.find(plsql, :test_employees_v_synonym).should_not be_nil
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should find view using synonym in schema" do
|
75
|
+
plsql.test_employees_v_synonym.should be_instance_of(PLSQL::View)
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
describe "public synonym" do
|
81
|
+
|
82
|
+
it "should find public synonym to view" do
|
83
|
+
PLSQL::View.find(plsql, :user_tables).should_not be_nil
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should find view using public synonym in schema" do
|
87
|
+
plsql.user_tables.should be_instance_of(PLSQL::View)
|
88
|
+
end
|
89
|
+
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "columns" do
|
93
|
+
|
94
|
+
it "should get column names for view" do
|
95
|
+
plsql.test_employees_v.column_names.should == [:employee_id, :first_name, :last_name, :hire_date, :status]
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should get columns metadata for view" do
|
99
|
+
plsql.test_employees_v.columns.should == {
|
100
|
+
:employee_id => {
|
101
|
+
:position=>1, :data_type=>"NUMBER", :data_length=>22, :data_precision=>15, :data_scale=>0, :char_used=>nil,
|
102
|
+
:type_owner=>nil, :type_name=>nil, :sql_type_name=>nil, :nullable => false, :data_default => nil},
|
103
|
+
:first_name => {
|
104
|
+
:position=>2, :data_type=>"VARCHAR2", :data_length=>50, :data_precision=>nil, :data_scale=>nil, :char_used=>"B",
|
105
|
+
:type_owner=>nil, :type_name=>nil, :sql_type_name=>nil, :nullable => true, :data_default => nil},
|
106
|
+
:last_name => {
|
107
|
+
:position=>3, :data_type=>"VARCHAR2", :data_length=>50, :data_precision=>nil, :data_scale=>nil, :char_used=>"B",
|
108
|
+
:type_owner=>nil, :type_name=>nil, :sql_type_name=>nil, :nullable => true, :data_default => nil},
|
109
|
+
:hire_date => {
|
110
|
+
:position=>4, :data_type=>"DATE", :data_length=>7, :data_precision=>nil, :data_scale=>nil, :char_used=>nil,
|
111
|
+
:type_owner=>nil, :type_name=>nil, :sql_type_name=>nil, :nullable => true, :data_default => nil},
|
112
|
+
:status => {
|
113
|
+
:position=>5, :data_type=>"VARCHAR2", :data_length=>1, :data_precision=>nil, :data_scale=>nil, :char_used=>"B",
|
114
|
+
:type_owner=>nil, :type_name=>nil, :sql_type_name=>nil, :nullable => true, :data_default => nil}
|
115
|
+
}
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
describe "insert" do
|
121
|
+
it "should insert a record in view" do
|
122
|
+
plsql.test_employees_v.insert @employees.first
|
123
|
+
plsql.test_employees_v.all.should == [@employees.first]
|
124
|
+
end
|
125
|
+
|
126
|
+
it "should insert a record in view using partial list of columns" do
|
127
|
+
plsql.test_employees_v.insert @employees.first.except(:hire_date)
|
128
|
+
plsql.test_employees_v.all.should == [@employees.first.merge(:hire_date => nil)]
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should insert default value from table definition if value not provided" do
|
132
|
+
plsql.test_employees_v.insert @employees.first.except(:status)
|
133
|
+
plsql.test_employees_v.all.should == [@employees.first.merge(:status => 'N')]
|
134
|
+
end
|
135
|
+
|
136
|
+
it "should insert array of records in view" do
|
137
|
+
plsql.test_employees_v.insert @employees
|
138
|
+
plsql.test_employees_v.all("ORDER BY employee_id").should == @employees
|
139
|
+
end
|
140
|
+
|
141
|
+
end
|
142
|
+
|
143
|
+
describe "insert values" do
|
144
|
+
it "should insert a record with array of values" do
|
145
|
+
plsql.test_employees_v.insert_values @employees_all_values.first
|
146
|
+
plsql.test_employees_v.all.should == [@employees.first]
|
147
|
+
end
|
148
|
+
|
149
|
+
it "should insert a record with list of all fields and array of values" do
|
150
|
+
plsql.test_employees_v.insert_values @employees_all_fields, @employees_all_values.first
|
151
|
+
plsql.test_employees_v.all.should == [@employees.first]
|
152
|
+
end
|
153
|
+
|
154
|
+
it "should insert a record with list of some fields and array of values" do
|
155
|
+
plsql.test_employees_v.insert_values @employees_some_fields, @employees_some_values.first
|
156
|
+
plsql.test_employees_v.all.should == [@employees.first.merge(@employee_default_values)]
|
157
|
+
end
|
158
|
+
|
159
|
+
it "should insert many records with array of values" do
|
160
|
+
plsql.test_employees_v.insert_values *@employees_all_values
|
161
|
+
plsql.test_employees_v.all.should == @employees
|
162
|
+
end
|
163
|
+
|
164
|
+
it "should insert many records with list of all fields and array of values" do
|
165
|
+
plsql.test_employees_v.insert_values @employees_all_fields, *@employees_all_values
|
166
|
+
plsql.test_employees_v.all.should == @employees
|
167
|
+
end
|
168
|
+
|
169
|
+
it "should insert many records with list of some fields and array of values" do
|
170
|
+
plsql.test_employees_v.insert_values @employees_some_fields, *@employees_some_values
|
171
|
+
plsql.test_employees_v.all.should == @employees.map{|e| e.merge(@employee_default_values)}
|
172
|
+
end
|
173
|
+
|
174
|
+
end
|
175
|
+
|
176
|
+
describe "select" do
|
177
|
+
before(:each) do
|
178
|
+
plsql.test_employees_v.insert @employees
|
179
|
+
end
|
180
|
+
|
181
|
+
it "should select first record in view" do
|
182
|
+
plsql.test_employees_v.select(:first, "ORDER BY employee_id").should == @employees.first
|
183
|
+
plsql.test_employees_v.first("ORDER BY employee_id").should == @employees.first
|
184
|
+
end
|
185
|
+
|
186
|
+
it "should select all records in view" do
|
187
|
+
plsql.test_employees_v.select(:all, "ORDER BY employee_id").should == @employees
|
188
|
+
plsql.test_employees_v.all("ORDER BY employee_id").should == @employees
|
189
|
+
plsql.test_employees_v.all(:order_by => :employee_id).should == @employees
|
190
|
+
end
|
191
|
+
|
192
|
+
it "should select record in view using WHERE condition" do
|
193
|
+
plsql.test_employees_v.select(:first, "WHERE employee_id = :1", @employees.first[:employee_id]).should == @employees.first
|
194
|
+
plsql.test_employees_v.first("WHERE employee_id = :1", @employees.first[:employee_id]).should == @employees.first
|
195
|
+
plsql.test_employees_v.first(:employee_id => @employees.first[:employee_id]).should == @employees.first
|
196
|
+
end
|
197
|
+
|
198
|
+
it "should select record in view using :column => nil condition" do
|
199
|
+
employee = @employees.last
|
200
|
+
employee[:employee_id] = employee[:employee_id] + 1
|
201
|
+
employee[:hire_date] = nil
|
202
|
+
plsql.test_employees_v.insert employee
|
203
|
+
plsql.test_employees_v.first("WHERE hire_date IS NULL").should == employee
|
204
|
+
plsql.test_employees_v.first(:hire_date => nil).should == employee
|
205
|
+
end
|
206
|
+
|
207
|
+
it "should count records in view" do
|
208
|
+
plsql.test_employees_v.select(:count).should == @employees.size
|
209
|
+
plsql.test_employees_v.count.should == @employees.size
|
210
|
+
end
|
211
|
+
|
212
|
+
it "should count records in view using condition" do
|
213
|
+
plsql.test_employees_v.select(:count, "WHERE employee_id <= :1", @employees[2][:employee_id]).should == 3
|
214
|
+
plsql.test_employees_v.count("WHERE employee_id <= :1", @employees[2][:employee_id]).should == 3
|
215
|
+
end
|
216
|
+
|
217
|
+
end
|
218
|
+
|
219
|
+
describe "update" do
|
220
|
+
it "should update a record in view" do
|
221
|
+
employee_id = @employees.first[:employee_id]
|
222
|
+
plsql.test_employees_v.insert @employees.first
|
223
|
+
plsql.test_employees_v.update :first_name => 'Test', :where => {:employee_id => employee_id}
|
224
|
+
plsql.test_employees_v.first(:employee_id => employee_id)[:first_name].should == 'Test'
|
225
|
+
end
|
226
|
+
|
227
|
+
it "should update a record in view using String WHERE condition" do
|
228
|
+
employee_id = @employees.first[:employee_id]
|
229
|
+
plsql.test_employees_v.insert @employees
|
230
|
+
plsql.test_employees_v.update :first_name => 'Test', :where => "employee_id = #{employee_id}"
|
231
|
+
plsql.test_employees_v.first(:employee_id => employee_id)[:first_name].should == 'Test'
|
232
|
+
# all other records should not be changed
|
233
|
+
plsql.test_employees_v.all("WHERE employee_id > :1", employee_id) do |employee|
|
234
|
+
employee[:first_name].should_not == 'Test'
|
235
|
+
end
|
236
|
+
end
|
237
|
+
|
238
|
+
it "should update all records in view" do
|
239
|
+
plsql.test_employees_v.insert @employees
|
240
|
+
plsql.test_employees_v.update :first_name => 'Test'
|
241
|
+
plsql.test_employees_v.all do |employee|
|
242
|
+
employee[:first_name].should == 'Test'
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
246
|
+
end
|
247
|
+
|
248
|
+
describe "delete" do
|
249
|
+
it "should delete record from view" do
|
250
|
+
employee_id = @employees.first[:employee_id]
|
251
|
+
plsql.test_employees_v.insert @employees
|
252
|
+
plsql.test_employees_v.delete :employee_id => employee_id
|
253
|
+
plsql.test_employees_v.first(:employee_id => employee_id).should be_nil
|
254
|
+
plsql.test_employees_v.all(:order_by => :employee_id).should == @employees[1, @employees.size-1]
|
255
|
+
end
|
256
|
+
|
257
|
+
it "should delete all records from view" do
|
258
|
+
plsql.test_employees_v.insert @employees
|
259
|
+
plsql.test_employees_v.delete
|
260
|
+
plsql.test_employees_v.all.should be_empty
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
end
|
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "bundler"
|
3
|
+
Bundler.setup(:default, :development)
|
4
|
+
|
5
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
6
|
+
|
7
|
+
require 'rspec'
|
8
|
+
|
9
|
+
unless ENV['NO_ACTIVERECORD']
|
10
|
+
require 'active_record'
|
11
|
+
else
|
12
|
+
puts 'Without ActiveRecord'
|
13
|
+
end
|
14
|
+
|
15
|
+
require 'ruby-plsql'
|
16
|
+
|
17
|
+
DATABASE_NAME = ENV['DATABASE_NAME'] || 'orcl'
|
18
|
+
|
19
|
+
if ENV['DATABASE_USE_TNS_NAMES']
|
20
|
+
DATABASE_HOST = nil
|
21
|
+
DATABASE_PORT = nil
|
22
|
+
else
|
23
|
+
DATABASE_HOST = ENV['DATABASE_HOST'] || 'localhost'
|
24
|
+
DATABASE_PORT = ENV['DATABASE_PORT'] || 1521
|
25
|
+
end
|
26
|
+
|
27
|
+
DATABASE_USERS_AND_PASSWORDS = [
|
28
|
+
[ENV['DATABASE_USER'] || 'hr', ENV['DATABASE_PASSWORD'] || 'hr'],
|
29
|
+
[ENV['DATABASE_USER2'] || 'arunit', ENV['DATABASE_PASSWORD2'] || 'arunit']
|
30
|
+
]
|
31
|
+
# specify which database version is used (will be verified in one test)
|
32
|
+
DATABASE_VERSION = ENV['DATABASE_VERSION'] || '10.2.0.4'
|
33
|
+
|
34
|
+
def get_connection(user_number = 0)
|
35
|
+
database_user, database_password = DATABASE_USERS_AND_PASSWORDS[user_number]
|
36
|
+
if defined?(JRUBY_VERSION)
|
37
|
+
begin
|
38
|
+
java.sql.DriverManager.getConnection("jdbc:oracle:thin:@#{DATABASE_HOST}:#{DATABASE_PORT}:#{DATABASE_NAME}",
|
39
|
+
database_user, database_password)
|
40
|
+
# if connection fails then sleep 5 seconds and retry
|
41
|
+
rescue NativeException
|
42
|
+
sleep 5
|
43
|
+
java.sql.DriverManager.getConnection("jdbc:oracle:thin:@#{DATABASE_HOST}:#{DATABASE_PORT}:#{DATABASE_NAME}",
|
44
|
+
database_user, database_password)
|
45
|
+
end
|
46
|
+
else
|
47
|
+
begin
|
48
|
+
OCI8.new(database_user, database_password, DATABASE_NAME)
|
49
|
+
# if connection fails then sleep 5 seconds and retry
|
50
|
+
rescue OCIError
|
51
|
+
sleep 5
|
52
|
+
OCI8.new(database_user, database_password, DATABASE_NAME)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
CONNECTION_PARAMS = {
|
58
|
+
:adapter => "oracle_enhanced",
|
59
|
+
:database => DATABASE_NAME,
|
60
|
+
:host => DATABASE_HOST,
|
61
|
+
:port => DATABASE_PORT,
|
62
|
+
:username => DATABASE_USERS_AND_PASSWORDS[0][0],
|
63
|
+
:password => DATABASE_USERS_AND_PASSWORDS[0][1]
|
64
|
+
}
|
65
|
+
|
66
|
+
class Hash
|
67
|
+
def except(*blacklist)
|
68
|
+
self.reject {|key, value| blacklist.include?(key) }
|
69
|
+
end unless method_defined?(:except)
|
70
|
+
|
71
|
+
def only(*whitelist)
|
72
|
+
self.reject {|key, value| !whitelist.include?(key) }
|
73
|
+
end unless method_defined?(:only)
|
74
|
+
end
|
75
|
+
|
76
|
+
# set default time zone in TZ environment variable
|
77
|
+
# which will be used to set session time zone
|
78
|
+
ENV['TZ'] ||= 'Europe/Riga'
|
79
|
+
# ENV['TZ'] ||= 'UTC'
|
metadata
ADDED
@@ -0,0 +1,159 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: flash-gordons-ruby-plsql
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Raimonds Simanovskis
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2012-04-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: jeweler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.8.3
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.8.3
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.9'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.9'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: activerecord
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.2.3
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.2.3
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: activerecord-oracle_enhanced-adapter
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.4.1
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.4.1
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: ruby-oci8
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.1.5
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 2.1.5
|
83
|
+
description: ! 'ruby-plsql gem provides simple Ruby API for calling Oracle PL/SQL
|
84
|
+
procedures.
|
85
|
+
|
86
|
+
It could be used both for accessing Oracle PL/SQL API procedures in legacy applications
|
87
|
+
|
88
|
+
as well as it could be used to create PL/SQL unit tests using Ruby testing libraries.
|
89
|
+
|
90
|
+
'
|
91
|
+
email: raimonds.simanovskis@gmail.com
|
92
|
+
executables: []
|
93
|
+
extensions: []
|
94
|
+
extra_rdoc_files:
|
95
|
+
- README.md
|
96
|
+
files:
|
97
|
+
- Gemfile
|
98
|
+
- History.txt
|
99
|
+
- License.txt
|
100
|
+
- README.md
|
101
|
+
- Rakefile
|
102
|
+
- VERSION
|
103
|
+
- lib/plsql/connection.rb
|
104
|
+
- lib/plsql/helpers.rb
|
105
|
+
- lib/plsql/jdbc_connection.rb
|
106
|
+
- lib/plsql/oci8_patches.rb
|
107
|
+
- lib/plsql/oci_connection.rb
|
108
|
+
- lib/plsql/package.rb
|
109
|
+
- lib/plsql/procedure.rb
|
110
|
+
- lib/plsql/procedure_call.rb
|
111
|
+
- lib/plsql/schema.rb
|
112
|
+
- lib/plsql/sequence.rb
|
113
|
+
- lib/plsql/sql_statements.rb
|
114
|
+
- lib/plsql/table.rb
|
115
|
+
- lib/plsql/type.rb
|
116
|
+
- lib/plsql/variable.rb
|
117
|
+
- lib/plsql/version.rb
|
118
|
+
- lib/plsql/view.rb
|
119
|
+
- lib/ruby-plsql.rb
|
120
|
+
- lib/ruby_plsql.rb
|
121
|
+
- ruby-plsql.gemspec
|
122
|
+
- spec/plsql/connection_spec.rb
|
123
|
+
- spec/plsql/package_spec.rb
|
124
|
+
- spec/plsql/procedure_spec.rb
|
125
|
+
- spec/plsql/schema_spec.rb
|
126
|
+
- spec/plsql/sequence_spec.rb
|
127
|
+
- spec/plsql/sql_statements_spec.rb
|
128
|
+
- spec/plsql/table_spec.rb
|
129
|
+
- spec/plsql/type_spec.rb
|
130
|
+
- spec/plsql/variable_spec.rb
|
131
|
+
- spec/plsql/version_spec.rb
|
132
|
+
- spec/plsql/view_spec.rb
|
133
|
+
- spec/spec.opts
|
134
|
+
- spec/spec_helper.rb
|
135
|
+
homepage: http://github.com/rsim/ruby-plsql
|
136
|
+
licenses:
|
137
|
+
- MIT
|
138
|
+
metadata: {}
|
139
|
+
post_install_message:
|
140
|
+
rdoc_options: []
|
141
|
+
require_paths:
|
142
|
+
- lib
|
143
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - ! '>='
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: '0'
|
148
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ! '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
requirements: []
|
154
|
+
rubyforge_project:
|
155
|
+
rubygems_version: 2.2.2
|
156
|
+
signing_key:
|
157
|
+
specification_version: 3
|
158
|
+
summary: Ruby API for calling Oracle PL/SQL procedures.
|
159
|
+
test_files: []
|