activerecord-jdbcas400-adapter 1.3.4.1 → 1.3.4.2
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 +4 -4
- data/README.md +6 -1
- data/lib/arjdbc/as400/adapter.rb +25 -27
- data/lib/arjdbc/as400/connection_methods.rb +4 -3
- data/test/config.yml +5 -0
- data/test/test_connection.rb +16 -0
- data/test/test_helper.rb +57 -0
- metadata +20 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db46adedfc6af99ae702410e95165bdc5d4f265f
|
4
|
+
data.tar.gz: cfe0595abb8d7615c931fba9ad6d023bf77afe18
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79ee6fd3f690309158c8aa3f8132c1f86517f71eb9187d028005d28f201b9d52c27e4f25105057d3c782b4d9c82870eab86c6facbaddc4dd4d9d0b7e495c5321
|
7
|
+
data.tar.gz: fe1a6897bf5510aa0f99873faf909f00136e784ea046c8da39ff335bc3442c7965f9d242ab91b7f233ab0bd232ca26bc64c386233e05e22f40b8001b19b2d813
|
data/README.md
CHANGED
@@ -15,13 +15,18 @@ development:
|
|
15
15
|
database: development
|
16
16
|
username: user
|
17
17
|
password: 1234
|
18
|
+
|
19
|
+
naming: sql
|
20
|
+
|
21
|
+
# This is possible only if naming=system and schema isn't defined
|
22
|
+
libraries: lib1,lib2,lib3
|
18
23
|
```
|
19
24
|
|
20
25
|
You cas also use JNDI in production mode:
|
21
26
|
```yml
|
22
27
|
production:
|
23
28
|
adapter: jndi # jdbc
|
24
|
-
jndi: jdbc/
|
29
|
+
jndi: jdbc/dataSource
|
25
30
|
```
|
26
31
|
|
27
32
|
If your DB isn't correctly discovered you can specify the dialect:
|
data/lib/arjdbc/as400/adapter.rb
CHANGED
@@ -60,8 +60,8 @@ module ArJdbc
|
|
60
60
|
def execute_and_auto_confirm(sql, name = nil)
|
61
61
|
|
62
62
|
begin
|
63
|
-
@connection.execute_update "
|
64
|
-
@connection.execute_update "
|
63
|
+
@connection.execute_update "CALL qsys.qcmdexc('QSYS/CHGJOB INQMSGRPY(*SYSRPYL)', 0000000031.00000)"
|
64
|
+
@connection.execute_update "CALL qsys.qcmdexc('ADDRPYLE SEQNBR(9876) MSGID(CPA32B2) RPY(''I'')', 0000000045.00000)"
|
65
65
|
rescue Exception => e
|
66
66
|
raise "Could not call CHGJOB INQMSGRPY(*SYSRPYL) and ADDRPYLE SEQNBR(9876) MSGID(CPA32B2) RPY('I').\n" +
|
67
67
|
"Do you have authority to do this?\n\n#{e.inspect}"
|
@@ -78,8 +78,8 @@ module ArJdbc
|
|
78
78
|
|
79
79
|
# Ensure default configuration restoration
|
80
80
|
begin
|
81
|
-
@connection.execute_update "
|
82
|
-
@connection.execute_update "
|
81
|
+
@connection.execute_update "CALL qsys.qcmdexc('QSYS/CHGJOB INQMSGRPY(*DFT)', 0000000027.00000)"
|
82
|
+
@connection.execute_update "CALL qsys.qcmdexc('RMVRPYLE SEQNBR(9876)', 0000000021.00000)"
|
83
83
|
rescue Exception => e
|
84
84
|
raise "Could not call CHGJOB INQMSGRPY(*DFT) and RMVRPYLE SEQNBR(9876).\n" +
|
85
85
|
"Do you have authority to do this?\n\n#{e.inspect}"
|
@@ -89,46 +89,44 @@ module ArJdbc
|
|
89
89
|
end
|
90
90
|
private :execute_and_auto_confirm
|
91
91
|
|
92
|
-
#
|
92
|
+
# Disable all schemas browsing
|
93
93
|
def table_exists?(name)
|
94
94
|
return false unless name
|
95
|
-
|
95
|
+
@connection.table_exists?(name, db2_schema)
|
96
|
+
end
|
97
|
+
|
98
|
+
def indexes(table_name, name = nil)
|
99
|
+
@connection.indexes(table_name, name, db2_schema)
|
96
100
|
end
|
97
101
|
|
98
102
|
DRIVER_NAME = 'com.ibm.as400.access.AS400JDBCDriver'.freeze
|
99
103
|
|
100
|
-
#
|
101
|
-
|
102
|
-
|
103
|
-
true
|
104
|
+
# Do not return *LIBL as schema
|
105
|
+
def schema
|
106
|
+
system_naming? ? nil : db2_schema
|
104
107
|
end
|
105
108
|
|
106
109
|
private
|
110
|
+
# If naming is really in system mode CURRENT_SCHEMA is *LIBL
|
111
|
+
def system_naming?
|
112
|
+
@db2_schema == '*LIBL'
|
113
|
+
end
|
114
|
+
|
115
|
+
# SET SCHEMA statement put connection in sql naming
|
116
|
+
def set_schema(schema)
|
117
|
+
execute("SET SCHEMA #{schema}") unless system_naming?
|
118
|
+
end
|
107
119
|
|
108
120
|
# @override
|
109
121
|
def db2_schema
|
110
|
-
@db2_schema
|
111
|
-
return @db2_schema if @db2_schema != false
|
122
|
+
return @db2_schema if defined? @db2_schema
|
112
123
|
@db2_schema =
|
113
124
|
if config[:schema].present?
|
114
125
|
config[:schema]
|
115
|
-
|
126
|
+
else
|
116
127
|
# Only found method to set db2_schema from jndi
|
117
128
|
result = select_one("SELECT CURRENT_SCHEMA FROM SYSIBM.SYSDUMMY1")
|
118
|
-
|
119
|
-
# If the connection uses the library list schema name will be nil
|
120
|
-
if schema == '*LIBL'
|
121
|
-
schema = nil
|
122
|
-
end
|
123
|
-
schema
|
124
|
-
else
|
125
|
-
# AS400 implementation takes schema from library name (last part of URL)
|
126
|
-
# jdbc:as400://localhost/schema;naming=system;libraries=lib1,lib2
|
127
|
-
schema = nil
|
128
|
-
split = config[:url].split('/')
|
129
|
-
# Return nil if schema isn't defined
|
130
|
-
schema = split.last.split(';').first.strip if split.size == 4
|
131
|
-
schema
|
129
|
+
result['00001']
|
132
130
|
end
|
133
131
|
end
|
134
132
|
|
@@ -8,13 +8,14 @@ ArJdbc::ConnectionMethods.module_eval do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
config[:url] ||= begin
|
11
|
-
# jdbc:as400://[host]
|
11
|
+
# jdbc:as400://[host];proxy server=[proxy:port];naming=[naming];libraries=[libraries];prompt=false
|
12
12
|
url = 'jdbc:as400://'
|
13
13
|
url << config[:host] if config[:host]
|
14
|
-
# jdbc:as400://myiSeries;database name=IASP1
|
15
14
|
url << ";database name=#{config[:database]}" if config[:database]
|
16
|
-
# jdbc:as400://[host];proxy server=HODServerName:proxyServerPort
|
17
15
|
url << ";proxy server=#{config[:proxy]}" if config[:proxy]
|
16
|
+
url << ";naming=#{config[:naming]}" if config[:naming]
|
17
|
+
url << ";libraries=#{config[:libraries]}" if config[:libraries]
|
18
|
+
url << ';prompt=false'
|
18
19
|
url
|
19
20
|
end
|
20
21
|
require 'arjdbc/as400/adapter'
|
data/test/config.yml
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class TestConnection < Test::Unit::TestCase
|
4
|
+
def test_system_naming
|
5
|
+
assert_false(connection.instance_eval {system_naming?})
|
6
|
+
assert_true(system_connection.instance_eval {system_naming?})
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_schema
|
10
|
+
assert_equal(connection.instance_eval {db2_schema}, config[:schema])
|
11
|
+
assert_equal(connection.schema, config[:schema])
|
12
|
+
|
13
|
+
assert_equal(system_connection.instance_eval {db2_schema}, '*LIBL')
|
14
|
+
assert_nil(system_connection.schema)
|
15
|
+
end
|
16
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'java'
|
2
|
+
|
3
|
+
begin
|
4
|
+
require 'bundler'
|
5
|
+
rescue LoadError => e
|
6
|
+
require('rubygems') && retry
|
7
|
+
raise e
|
8
|
+
end
|
9
|
+
Bundler.require(:default, :test)
|
10
|
+
|
11
|
+
class Test::Unit::TestCase
|
12
|
+
def config
|
13
|
+
@config ||= YAML::load(File.open('config.yml'))
|
14
|
+
@config.symbolize_keys
|
15
|
+
end
|
16
|
+
|
17
|
+
def data_source_connection
|
18
|
+
return @connection if @connection && @connection_type == 'data_source'
|
19
|
+
# Create a data source to the iSeries database.
|
20
|
+
datasource = com.ibm.as400.access.AS400JDBCDataSource.new
|
21
|
+
datasource.setServerName(config[:host])
|
22
|
+
datasource.setLibraries(config[:libraries])
|
23
|
+
datasource.setUser(config[:username])
|
24
|
+
datasource.setPassword(config[:password])
|
25
|
+
|
26
|
+
ActiveRecord::Base.establish_connection(adapter: 'as400', data_source: datasource)
|
27
|
+
@connection_type = 'data_source'
|
28
|
+
@connection = ActiveRecord::Base.connection
|
29
|
+
end
|
30
|
+
|
31
|
+
def connection
|
32
|
+
return @connection if @connection && @connection_type == 'connection'
|
33
|
+
ActiveRecord::Base.establish_connection(
|
34
|
+
adapter: 'as400',
|
35
|
+
host: config[:host],
|
36
|
+
username: config[:username],
|
37
|
+
password: config[:password],
|
38
|
+
schema: config[:schema]
|
39
|
+
)
|
40
|
+
@connection_type = 'connection'
|
41
|
+
@connection = ActiveRecord::Base.connection
|
42
|
+
end
|
43
|
+
|
44
|
+
def system_connection
|
45
|
+
return @connection if @connection && @connection_type == 'system'
|
46
|
+
ActiveRecord::Base.establish_connection(
|
47
|
+
adapter: 'as400',
|
48
|
+
host: config[:host],
|
49
|
+
username: config[:username],
|
50
|
+
password: config[:password],
|
51
|
+
naming: 'system',
|
52
|
+
libraries: config[:libraries]
|
53
|
+
)
|
54
|
+
@connection_type = 'system'
|
55
|
+
@connection = ActiveRecord::Base.connection
|
56
|
+
end
|
57
|
+
end
|
metadata
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-jdbcas400-adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.4.
|
4
|
+
version: 1.3.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Sieger, Ola Bini, Pierrick Rouxel and JRuby contributors
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-01-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord-jdbc-adapter
|
15
|
-
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.3.4
|
20
|
-
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirement: !ruby/object:Gem::Requirement
|
23
21
|
requirements:
|
24
22
|
- - '>='
|
25
23
|
- !ruby/object:Gem::Version
|
26
24
|
version: 1.3.4
|
25
|
+
prerelease: false
|
26
|
+
type: :runtime
|
27
27
|
description: Install this gem to use AS/400 with JRuby on Rails.
|
28
28
|
email: nick@nicksieger.com, ola.bini@gmail.com
|
29
29
|
executables: []
|
@@ -33,16 +33,19 @@ files:
|
|
33
33
|
- Rakefile
|
34
34
|
- README.md
|
35
35
|
- LICENSE.txt
|
36
|
-
- lib/active_record/connection_adapters/as400_adapter.rb
|
37
36
|
- lib/activerecord-jdbcas400-adapter.rb
|
38
|
-
- lib/
|
39
|
-
- lib/arjdbc/as400/connection_methods.rb
|
37
|
+
- lib/active_record/connection_adapters/as400_adapter.rb
|
40
38
|
- lib/arjdbc/as400.rb
|
41
39
|
- lib/arjdbc/discover.rb
|
40
|
+
- lib/arjdbc/as400/adapter.rb
|
41
|
+
- lib/arjdbc/as400/connection_methods.rb
|
42
|
+
- test/config.yml
|
43
|
+
- test/test_connection.rb
|
44
|
+
- test/test_helper.rb
|
42
45
|
homepage: https://github.com/pierrickrouxel/activerecord-jdbcas400-adapter
|
43
46
|
licenses: []
|
44
47
|
metadata: {}
|
45
|
-
post_install_message:
|
48
|
+
post_install_message:
|
46
49
|
rdoc_options: []
|
47
50
|
require_paths:
|
48
51
|
- lib
|
@@ -58,8 +61,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
58
61
|
version: '0'
|
59
62
|
requirements: []
|
60
63
|
rubyforge_project: jruby-extras
|
61
|
-
rubygems_version: 2.
|
62
|
-
signing_key:
|
64
|
+
rubygems_version: 2.1.11
|
65
|
+
signing_key:
|
63
66
|
specification_version: 4
|
64
67
|
summary: AS/400 JDBC adapter for JRuby on Rails.
|
65
|
-
test_files:
|
68
|
+
test_files:
|
69
|
+
- test/config.yml
|
70
|
+
- test/test_connection.rb
|
71
|
+
- test/test_helper.rb
|