activerecord-jdbc-alt-adapter 50.3.0-java
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 +7 -0
- data/.gitignore +35 -0
- data/.travis.yml +100 -0
- data/.yardopts +4 -0
- data/CONTRIBUTING.md +50 -0
- data/Gemfile +92 -0
- data/History.md +1191 -0
- data/LICENSE.txt +26 -0
- data/README.md +240 -0
- data/RUNNING_TESTS.md +127 -0
- data/Rakefile +336 -0
- data/Rakefile.jdbc +20 -0
- data/activerecord-jdbc-adapter.gemspec +55 -0
- data/activerecord-jdbc-alt-adapter.gemspec +56 -0
- data/lib/active_record/connection_adapters/as400_adapter.rb +2 -0
- data/lib/active_record/connection_adapters/db2_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/derby_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/firebird_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/h2_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/hsqldb_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/informix_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/jdbc_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/jndi_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/mariadb_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/mssql_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/mysql2_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/mysql_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/postgresql_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/sqlite3_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/sqlserver_adapter.rb +1 -0
- data/lib/activerecord-jdbc-adapter.rb +1 -0
- data/lib/arel/visitors/compat.rb +60 -0
- data/lib/arel/visitors/db2.rb +137 -0
- data/lib/arel/visitors/derby.rb +112 -0
- data/lib/arel/visitors/firebird.rb +79 -0
- data/lib/arel/visitors/h2.rb +25 -0
- data/lib/arel/visitors/hsqldb.rb +32 -0
- data/lib/arel/visitors/postgresql_jdbc.rb +6 -0
- data/lib/arel/visitors/sql_server.rb +225 -0
- data/lib/arel/visitors/sql_server/ng42.rb +294 -0
- data/lib/arel/visitors/sqlserver.rb +214 -0
- data/lib/arjdbc.rb +19 -0
- data/lib/arjdbc/abstract/connection_management.rb +35 -0
- data/lib/arjdbc/abstract/core.rb +74 -0
- data/lib/arjdbc/abstract/database_statements.rb +64 -0
- data/lib/arjdbc/abstract/statement_cache.rb +58 -0
- data/lib/arjdbc/abstract/transaction_support.rb +86 -0
- data/lib/arjdbc/db2.rb +4 -0
- data/lib/arjdbc/db2/adapter.rb +789 -0
- data/lib/arjdbc/db2/as400.rb +130 -0
- data/lib/arjdbc/db2/column.rb +167 -0
- data/lib/arjdbc/db2/connection_methods.rb +44 -0
- data/lib/arjdbc/derby.rb +3 -0
- data/lib/arjdbc/derby/active_record_patch.rb +13 -0
- data/lib/arjdbc/derby/adapter.rb +540 -0
- data/lib/arjdbc/derby/connection_methods.rb +20 -0
- data/lib/arjdbc/derby/schema_creation.rb +15 -0
- data/lib/arjdbc/discover.rb +104 -0
- data/lib/arjdbc/firebird.rb +4 -0
- data/lib/arjdbc/firebird/adapter.rb +434 -0
- data/lib/arjdbc/firebird/connection_methods.rb +23 -0
- data/lib/arjdbc/h2.rb +3 -0
- data/lib/arjdbc/h2/adapter.rb +303 -0
- data/lib/arjdbc/h2/connection_methods.rb +27 -0
- data/lib/arjdbc/hsqldb.rb +3 -0
- data/lib/arjdbc/hsqldb/adapter.rb +297 -0
- data/lib/arjdbc/hsqldb/connection_methods.rb +28 -0
- data/lib/arjdbc/hsqldb/explain_support.rb +35 -0
- data/lib/arjdbc/hsqldb/schema_creation.rb +11 -0
- data/lib/arjdbc/informix.rb +5 -0
- data/lib/arjdbc/informix/adapter.rb +162 -0
- data/lib/arjdbc/informix/connection_methods.rb +9 -0
- data/lib/arjdbc/jdbc.rb +59 -0
- data/lib/arjdbc/jdbc/adapter.rb +475 -0
- data/lib/arjdbc/jdbc/adapter_require.rb +46 -0
- data/lib/arjdbc/jdbc/base_ext.rb +15 -0
- data/lib/arjdbc/jdbc/callbacks.rb +53 -0
- data/lib/arjdbc/jdbc/column.rb +97 -0
- data/lib/arjdbc/jdbc/connection.rb +14 -0
- data/lib/arjdbc/jdbc/connection_methods.rb +37 -0
- data/lib/arjdbc/jdbc/error.rb +65 -0
- data/lib/arjdbc/jdbc/extension.rb +59 -0
- data/lib/arjdbc/jdbc/java.rb +13 -0
- data/lib/arjdbc/jdbc/railtie.rb +2 -0
- data/lib/arjdbc/jdbc/rake_tasks.rb +3 -0
- data/lib/arjdbc/jdbc/serialized_attributes_helper.rb +3 -0
- data/lib/arjdbc/jdbc/type_cast.rb +166 -0
- data/lib/arjdbc/jdbc/type_converter.rb +142 -0
- data/lib/arjdbc/mssql.rb +7 -0
- data/lib/arjdbc/mssql/adapter.rb +384 -0
- data/lib/arjdbc/mssql/column.rb +29 -0
- data/lib/arjdbc/mssql/connection_methods.rb +79 -0
- data/lib/arjdbc/mssql/database_statements.rb +134 -0
- data/lib/arjdbc/mssql/errors.rb +6 -0
- data/lib/arjdbc/mssql/explain_support.rb +129 -0
- data/lib/arjdbc/mssql/extensions.rb +36 -0
- data/lib/arjdbc/mssql/limit_helpers.rb +231 -0
- data/lib/arjdbc/mssql/lock_methods.rb +77 -0
- data/lib/arjdbc/mssql/old_adapter.rb +804 -0
- data/lib/arjdbc/mssql/old_column.rb +200 -0
- data/lib/arjdbc/mssql/quoting.rb +101 -0
- data/lib/arjdbc/mssql/schema_creation.rb +31 -0
- data/lib/arjdbc/mssql/schema_definitions.rb +74 -0
- data/lib/arjdbc/mssql/schema_statements.rb +329 -0
- data/lib/arjdbc/mssql/transaction.rb +69 -0
- data/lib/arjdbc/mssql/types.rb +52 -0
- data/lib/arjdbc/mssql/types/binary_types.rb +33 -0
- data/lib/arjdbc/mssql/types/date_and_time_types.rb +134 -0
- data/lib/arjdbc/mssql/types/deprecated_types.rb +40 -0
- data/lib/arjdbc/mssql/types/numeric_types.rb +71 -0
- data/lib/arjdbc/mssql/types/string_types.rb +56 -0
- data/lib/arjdbc/mssql/utils.rb +66 -0
- data/lib/arjdbc/mysql.rb +3 -0
- data/lib/arjdbc/mysql/adapter.rb +140 -0
- data/lib/arjdbc/mysql/connection_methods.rb +166 -0
- data/lib/arjdbc/oracle/adapter.rb +863 -0
- data/lib/arjdbc/postgresql.rb +3 -0
- data/lib/arjdbc/postgresql/adapter.rb +687 -0
- data/lib/arjdbc/postgresql/base/array_decoder.rb +26 -0
- data/lib/arjdbc/postgresql/base/array_encoder.rb +25 -0
- data/lib/arjdbc/postgresql/base/array_parser.rb +95 -0
- data/lib/arjdbc/postgresql/base/pgconn.rb +11 -0
- data/lib/arjdbc/postgresql/column.rb +51 -0
- data/lib/arjdbc/postgresql/connection_methods.rb +67 -0
- data/lib/arjdbc/postgresql/name.rb +24 -0
- data/lib/arjdbc/postgresql/oid_types.rb +266 -0
- data/lib/arjdbc/railtie.rb +11 -0
- data/lib/arjdbc/sqlite3.rb +3 -0
- data/lib/arjdbc/sqlite3/adapter.rb +678 -0
- data/lib/arjdbc/sqlite3/connection_methods.rb +59 -0
- data/lib/arjdbc/sybase.rb +2 -0
- data/lib/arjdbc/sybase/adapter.rb +47 -0
- data/lib/arjdbc/tasks.rb +13 -0
- data/lib/arjdbc/tasks/database_tasks.rb +31 -0
- data/lib/arjdbc/tasks/databases.rake +48 -0
- data/lib/arjdbc/tasks/db2_database_tasks.rb +104 -0
- data/lib/arjdbc/tasks/derby_database_tasks.rb +95 -0
- data/lib/arjdbc/tasks/h2_database_tasks.rb +31 -0
- data/lib/arjdbc/tasks/hsqldb_database_tasks.rb +70 -0
- data/lib/arjdbc/tasks/jdbc_database_tasks.rb +169 -0
- data/lib/arjdbc/tasks/mssql_database_tasks.rb +46 -0
- data/lib/arjdbc/util/quoted_cache.rb +60 -0
- data/lib/arjdbc/util/serialized_attributes.rb +98 -0
- data/lib/arjdbc/util/table_copier.rb +110 -0
- data/lib/arjdbc/version.rb +3 -0
- data/lib/generators/jdbc/USAGE +9 -0
- data/lib/generators/jdbc/jdbc_generator.rb +17 -0
- data/lib/jdbc_adapter.rb +2 -0
- data/lib/jdbc_adapter/rake_tasks.rb +4 -0
- data/lib/jdbc_adapter/version.rb +4 -0
- data/pom.xml +114 -0
- data/rails_generators/jdbc_generator.rb +15 -0
- data/rails_generators/templates/config/initializers/jdbc.rb +10 -0
- data/rails_generators/templates/lib/tasks/jdbc.rake +11 -0
- data/rakelib/01-tomcat.rake +51 -0
- data/rakelib/02-test.rake +132 -0
- data/rakelib/bundler_ext.rb +11 -0
- data/rakelib/db.rake +75 -0
- data/rakelib/rails.rake +223 -0
- data/src/java/arjdbc/ArJdbcModule.java +276 -0
- data/src/java/arjdbc/db2/DB2Module.java +76 -0
- data/src/java/arjdbc/db2/DB2RubyJdbcConnection.java +126 -0
- data/src/java/arjdbc/derby/DerbyModule.java +178 -0
- data/src/java/arjdbc/derby/DerbyRubyJdbcConnection.java +152 -0
- data/src/java/arjdbc/firebird/FirebirdRubyJdbcConnection.java +174 -0
- data/src/java/arjdbc/h2/H2Module.java +50 -0
- data/src/java/arjdbc/h2/H2RubyJdbcConnection.java +85 -0
- data/src/java/arjdbc/hsqldb/HSQLDBModule.java +73 -0
- data/src/java/arjdbc/informix/InformixRubyJdbcConnection.java +75 -0
- data/src/java/arjdbc/jdbc/AdapterJavaService.java +43 -0
- data/src/java/arjdbc/jdbc/Callable.java +44 -0
- data/src/java/arjdbc/jdbc/ConnectionFactory.java +45 -0
- data/src/java/arjdbc/jdbc/DataSourceConnectionFactory.java +156 -0
- data/src/java/arjdbc/jdbc/DriverConnectionFactory.java +63 -0
- data/src/java/arjdbc/jdbc/DriverWrapper.java +119 -0
- data/src/java/arjdbc/jdbc/JdbcResult.java +130 -0
- data/src/java/arjdbc/jdbc/RubyConnectionFactory.java +61 -0
- data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +3979 -0
- data/src/java/arjdbc/mssql/MSSQLModule.java +90 -0
- data/src/java/arjdbc/mssql/MSSQLRubyJdbcConnection.java +508 -0
- data/src/java/arjdbc/mysql/MySQLModule.java +152 -0
- data/src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java +294 -0
- data/src/java/arjdbc/oracle/OracleModule.java +80 -0
- data/src/java/arjdbc/oracle/OracleRubyJdbcConnection.java +455 -0
- data/src/java/arjdbc/postgresql/ByteaUtils.java +157 -0
- data/src/java/arjdbc/postgresql/PgDateTimeUtils.java +52 -0
- data/src/java/arjdbc/postgresql/PostgreSQLModule.java +77 -0
- data/src/java/arjdbc/postgresql/PostgreSQLResult.java +192 -0
- data/src/java/arjdbc/postgresql/PostgreSQLRubyJdbcConnection.java +948 -0
- data/src/java/arjdbc/sqlite3/SQLite3Module.java +73 -0
- data/src/java/arjdbc/sqlite3/SQLite3RubyJdbcConnection.java +525 -0
- data/src/java/arjdbc/util/CallResultSet.java +826 -0
- data/src/java/arjdbc/util/DateTimeUtils.java +699 -0
- data/src/java/arjdbc/util/ObjectSupport.java +65 -0
- data/src/java/arjdbc/util/QuotingUtils.java +137 -0
- data/src/java/arjdbc/util/StringCache.java +63 -0
- data/src/java/arjdbc/util/StringHelper.java +145 -0
- metadata +269 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
class JdbcGenerator < Rails::Generators::Base
|
|
2
|
+
def self.source_root
|
|
3
|
+
@source_root ||= File.expand_path('../../../../rails_generators/templates', __FILE__)
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
def create_jdbc_files
|
|
7
|
+
directory '.', '.'
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.desc(description=nil)
|
|
11
|
+
return super if description
|
|
12
|
+
"Description:\n" <<
|
|
13
|
+
" Creates stubs that ensure AR-JDBC is bootstrapped in your Rails application.\n" <<
|
|
14
|
+
" NOTE: you should not need this if you're on Rails >= 3.0 (using Bundler) ..."
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
data/lib/jdbc_adapter.rb
ADDED
data/pom.xml
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
2
|
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
|
3
|
+
<modelVersion>4.0.0</modelVersion>
|
|
4
|
+
<groupId>org.jruby.rails</groupId>
|
|
5
|
+
<artifactId>activerecord-jdbc</artifactId>
|
|
6
|
+
<packaging>jar</packaging>
|
|
7
|
+
<version>IDE-SNAPSHOT</version>
|
|
8
|
+
<name>activerecord-jdbc</name>
|
|
9
|
+
<description>
|
|
10
|
+
This POM for ActiveRecord-JDBC is just for bootstrapping IDEs.
|
|
11
|
+
</description>
|
|
12
|
+
<url>http://github.com/jruby/activerecord-jdbc-adapter/wiki</url>
|
|
13
|
+
|
|
14
|
+
<properties>
|
|
15
|
+
<jruby.version>9.1.6.0</jruby.version>
|
|
16
|
+
</properties>
|
|
17
|
+
|
|
18
|
+
<issueManagement>
|
|
19
|
+
<system>GitHub</system>
|
|
20
|
+
<url>http://github.com/jruby/activerecord-jdbc-adapter/issues</url>
|
|
21
|
+
</issueManagement>
|
|
22
|
+
|
|
23
|
+
<scm>
|
|
24
|
+
<connection>scm:git:git://github.com/jruby/activerecord-jdbc-adapter.git</connection>
|
|
25
|
+
<developerConnection>scm:git:git@github.com:jruby/activerecord-jdbc-adapter.git</developerConnection>
|
|
26
|
+
<url>https://github.com/jruby/activerecord-jdbc-adapter</url>
|
|
27
|
+
</scm>
|
|
28
|
+
|
|
29
|
+
<licenses>
|
|
30
|
+
<license>
|
|
31
|
+
<name>BSD</name>
|
|
32
|
+
<url>http://www.opensource.org/licenses/bsd-license.php</url>
|
|
33
|
+
<distribution>repo</distribution>
|
|
34
|
+
</license>
|
|
35
|
+
<license>
|
|
36
|
+
<name>MIT License</name>
|
|
37
|
+
<url>http://www.opensource.org/licenses/mit-license.php</url>
|
|
38
|
+
<distribution>repo</distribution>
|
|
39
|
+
</license>
|
|
40
|
+
</licenses>
|
|
41
|
+
<!--
|
|
42
|
+
<repositories>
|
|
43
|
+
<repository>
|
|
44
|
+
<id>codehaus</id>
|
|
45
|
+
<name>Codehaus Repository</name>
|
|
46
|
+
<releases>
|
|
47
|
+
<enabled>true</enabled>
|
|
48
|
+
</releases>
|
|
49
|
+
<snapshots>
|
|
50
|
+
<enabled>false</enabled>
|
|
51
|
+
</snapshots>
|
|
52
|
+
<url>http://repository.codehaus.org</url>
|
|
53
|
+
</repository>
|
|
54
|
+
</repositories>-->
|
|
55
|
+
|
|
56
|
+
<developers>
|
|
57
|
+
<developer>
|
|
58
|
+
<id>nicksieger</id>
|
|
59
|
+
<name>Nick Sieger</name>
|
|
60
|
+
<email>nicksieger@gmail.com</email>
|
|
61
|
+
</developer>
|
|
62
|
+
<developer>
|
|
63
|
+
<id>kares</id>
|
|
64
|
+
<name>Karol Bucek</name>
|
|
65
|
+
<email>self@kares.org</email>
|
|
66
|
+
</developer>
|
|
67
|
+
</developers>
|
|
68
|
+
|
|
69
|
+
<dependencies>
|
|
70
|
+
<dependency>
|
|
71
|
+
<groupId>org.jruby</groupId>
|
|
72
|
+
<artifactId>jruby-complete</artifactId>
|
|
73
|
+
<version>${jruby.version}</version>
|
|
74
|
+
</dependency>
|
|
75
|
+
<dependency>
|
|
76
|
+
<groupId>org.postgresql</groupId>
|
|
77
|
+
<artifactId>postgresql</artifactId>
|
|
78
|
+
<version>42.1.4.jre7</version>
|
|
79
|
+
</dependency>
|
|
80
|
+
</dependencies>
|
|
81
|
+
|
|
82
|
+
<build>
|
|
83
|
+
|
|
84
|
+
<sourceDirectory>src/java</sourceDirectory>
|
|
85
|
+
<resources>
|
|
86
|
+
<resource>
|
|
87
|
+
<directory>lib</directory>
|
|
88
|
+
</resource>
|
|
89
|
+
</resources>
|
|
90
|
+
<!--
|
|
91
|
+
<testSourceDirectory>test/java</testSourceDirectory>-->
|
|
92
|
+
<testResources>
|
|
93
|
+
<testResource>
|
|
94
|
+
<directory>test</directory>
|
|
95
|
+
</testResource>
|
|
96
|
+
</testResources>
|
|
97
|
+
|
|
98
|
+
<outputDirectory>pkg/classes</outputDirectory>
|
|
99
|
+
|
|
100
|
+
<plugins>
|
|
101
|
+
<plugin>
|
|
102
|
+
<groupId>org.apache.maven.plugins</groupId>
|
|
103
|
+
<artifactId>maven-compiler-plugin</artifactId>
|
|
104
|
+
<version>2.5.1</version>
|
|
105
|
+
<configuration>
|
|
106
|
+
<source>1.7</source>
|
|
107
|
+
<target>1.7</target>
|
|
108
|
+
</configuration>
|
|
109
|
+
</plugin>
|
|
110
|
+
</plugins>
|
|
111
|
+
|
|
112
|
+
</build>
|
|
113
|
+
|
|
114
|
+
</project>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class JdbcGenerator < Rails::Generator::Base
|
|
2
|
+
def manifest
|
|
3
|
+
record do |m|
|
|
4
|
+
m.directory 'config/initializers'
|
|
5
|
+
m.template 'config/initializers/jdbc.rb', File.join('config', 'initializers', 'jdbc.rb')
|
|
6
|
+
m.directory 'lib/tasks'
|
|
7
|
+
m.template 'lib/tasks/jdbc.rake', File.join('lib', 'tasks', 'jdbc.rake')
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
protected
|
|
12
|
+
def banner
|
|
13
|
+
"Usage: #{$0} jdbc\nGenerate JDBC bootstrapping files for your Rails (2.x) application."
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# This file was generated by the "jdbc" generator, which is provided by the
|
|
2
|
+
# activerecord-jdbc-adapter gem.
|
|
3
|
+
#
|
|
4
|
+
# This file allows the JDBC adapters to be hooked into ActiveRecord such that
|
|
5
|
+
# you don't have to change anything else in your Rails application.
|
|
6
|
+
#
|
|
7
|
+
# NOTE: This is only needed on Rails 2.x - without Bundler since when you're
|
|
8
|
+
# using Bundler than `gem 'activerecord-jdbc-adapter'` will automatically
|
|
9
|
+
# `require 'arjdbc'` by default (unless you set it to `require: false`).
|
|
10
|
+
require 'arjdbc' if defined?(JRUBY_VERSION)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# This file was generated by the "jdbc" generator, which is provided by the
|
|
2
|
+
# activerecord-jdbc-adapter gem.
|
|
3
|
+
#
|
|
4
|
+
# This file allows you to use Rails' various db:* tasks with the JDBC adapters.
|
|
5
|
+
#
|
|
6
|
+
# NOTE: Only needed on Rails 2.x and it's fine to delete this file otherwise,
|
|
7
|
+
# since on Rails 3.x AR-JDBC provides a Railtie that loads the Rake tasks.
|
|
8
|
+
if defined?(JRUBY_VERSION)
|
|
9
|
+
require 'arjdbc'
|
|
10
|
+
require 'arjdbc/tasks'
|
|
11
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
namespace :'tomcat-jndi' do # contains a FS JNDI impl (for tests)
|
|
2
|
+
|
|
3
|
+
TOMCAT_MAVEN_REPO = 'http://repo2.maven.org/maven2/org/apache/tomcat'
|
|
4
|
+
TOMCAT_VERSION = '7.0.54'
|
|
5
|
+
|
|
6
|
+
DOWNLOAD_DIR = File.expand_path('../test/jars', File.dirname(__FILE__))
|
|
7
|
+
|
|
8
|
+
#tomcat_jar = "tomcat-embed-core.jar"
|
|
9
|
+
#tomcat_uri = "#{TOMCAT_MAVEN_REPO}/embed/tomcat-embed-core/#{TOMCAT_VERSION}/tomcat-embed-core-#{TOMCAT_VERSION}.jar"
|
|
10
|
+
|
|
11
|
+
catalina_jar = "tomcat-catalina.jar"
|
|
12
|
+
catalina_uri = "#{TOMCAT_MAVEN_REPO}/tomcat-catalina/#{TOMCAT_VERSION}/tomcat-catalina-#{TOMCAT_VERSION}.jar"
|
|
13
|
+
|
|
14
|
+
juli_jar = "tomcat-juli.jar"
|
|
15
|
+
juli_uri = "#{TOMCAT_MAVEN_REPO}/tomcat-juli/#{TOMCAT_VERSION}/tomcat-juli-#{TOMCAT_VERSION}.jar"
|
|
16
|
+
|
|
17
|
+
task :download do
|
|
18
|
+
require 'open-uri'; require 'tmpdir'
|
|
19
|
+
|
|
20
|
+
temp_dir = File.join(Dir.tmpdir, (Time.now.to_f * 1000).to_i.to_s)
|
|
21
|
+
FileUtils.mkdir temp_dir
|
|
22
|
+
|
|
23
|
+
downloads = Hash.new
|
|
24
|
+
downloads[juli_jar] = juli_uri
|
|
25
|
+
downloads[catalina_jar] = catalina_uri
|
|
26
|
+
|
|
27
|
+
Dir.chdir(temp_dir) do
|
|
28
|
+
FileUtils.mkdir DOWNLOAD_DIR unless File.exist?(DOWNLOAD_DIR)
|
|
29
|
+
downloads.each do |jar, uri|
|
|
30
|
+
puts "downloading #{uri}"
|
|
31
|
+
file = open(uri)
|
|
32
|
+
FileUtils.cp file.path, File.join(DOWNLOAD_DIR, jar)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
FileUtils.rm_r temp_dir
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
task :check do
|
|
40
|
+
jar_path = File.join(DOWNLOAD_DIR, catalina_jar)
|
|
41
|
+
unless File.exist?(jar_path)
|
|
42
|
+
Rake::Task['tomcat-jndi:download'].invoke
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
task :clear do
|
|
47
|
+
jar_path = File.join(DOWNLOAD_DIR, catalina_jar)
|
|
48
|
+
rm jar_path if File.exist?(jar_path)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
|
|
2
|
+
test_tasks = [ 'test_mysql', 'test_sqlite3', 'test_postgresql_with_hint' ]
|
|
3
|
+
if defined?(JRUBY_VERSION)
|
|
4
|
+
test_tasks.push :test_derby, :test_hsqldb, :test_h2
|
|
5
|
+
test_tasks.push :test_jndi, :test_jdbc
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
desc "Run \"most\" available test_xxx tasks"
|
|
9
|
+
task :test => test_tasks
|
|
10
|
+
|
|
11
|
+
task 'test_postgresql_with_hint' do
|
|
12
|
+
require File.expand_path('../../test/shared_helper', __FILE__)
|
|
13
|
+
if PostgresHelper.have_postgres?(false)
|
|
14
|
+
Rake::Task['test_postgresql'].invoke
|
|
15
|
+
else
|
|
16
|
+
puts "NOTE: won't run test_postgresql"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
Rake::TestTask.class_eval { attr_reader :test_files }
|
|
21
|
+
|
|
22
|
+
def test_task_for(adapter, options = {})
|
|
23
|
+
desc = options[:desc] || options[:comment] || "Run tests against #{options[:database_name] || adapter}"
|
|
24
|
+
adapter = adapter.to_s.downcase
|
|
25
|
+
driver = adapter if ( driver = options[:driver] ).nil?
|
|
26
|
+
prereqs = options[:prereqs] || []
|
|
27
|
+
unless prereqs.frozen?
|
|
28
|
+
prereqs = [ prereqs ].flatten; # prereqs << 'test_appraisal_hint'
|
|
29
|
+
end
|
|
30
|
+
name = options[:name] || "test_#{adapter}"
|
|
31
|
+
test_task = Rake::TestTask.new(name => prereqs) do |test_task|
|
|
32
|
+
files = options[:files] || begin
|
|
33
|
+
FileList["test/#{adapter}*_test.rb"] + FileList["test/db/#{adapter}/**/*_test.rb"]
|
|
34
|
+
end
|
|
35
|
+
test_task.test_files = files
|
|
36
|
+
test_task.libs = []
|
|
37
|
+
if defined?(JRUBY_VERSION)
|
|
38
|
+
test_task.libs << 'lib'
|
|
39
|
+
test_task.libs << "jdbc-#{driver}/lib" if driver && File.exists?("jdbc-#{driver}/lib")
|
|
40
|
+
test_task.libs.push *FileList["activerecord-jdbc#{adapter}*/lib"]
|
|
41
|
+
end
|
|
42
|
+
test_task.libs << 'test'
|
|
43
|
+
test_task.options = '--use-color=t'
|
|
44
|
+
test_task.verbose = true if $VERBOSE
|
|
45
|
+
yield(test_task) if block_given?
|
|
46
|
+
end
|
|
47
|
+
task = Rake::Task[name]
|
|
48
|
+
# reset the description set-up by Rake::TestTask :
|
|
49
|
+
if task.instance_variable_defined? :@full_comment
|
|
50
|
+
task.instance_variable_set(:@full_comment, nil)
|
|
51
|
+
else
|
|
52
|
+
task.instance_variable_get(:@comments).clear
|
|
53
|
+
end
|
|
54
|
+
task.add_description(desc)
|
|
55
|
+
test_task
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
test_task_for :Derby, :desc => 'Run tests against (embedded) DerbyDB'
|
|
59
|
+
test_task_for :H2, :desc => 'Run tests against H2 database engine'
|
|
60
|
+
test_task_for :HSQLDB, :desc => 'Run tests against HyperSQL (Java) database'
|
|
61
|
+
test_task_for :MSSQL, :driver => :jtds, :database_name => 'MS-SQL (SQLServer)'
|
|
62
|
+
test_task_for :MySQL #, :prereqs => 'db:mysql'
|
|
63
|
+
task :test_mysql2 => :test_mysql
|
|
64
|
+
test_task_for :PostgreSQL, :driver => ENV['JDBC_POSTGRES_VERSION'] || 'postgres' #, :prereqs => 'db:postgresql'
|
|
65
|
+
task :test_postgres => :test_postgresql # alias
|
|
66
|
+
test_task_for :SQLite3, :driver => ENV['JDBC_SQLITE_VERSION']
|
|
67
|
+
task :test_sqlite => :test_sqlite3 # alias
|
|
68
|
+
test_task_for :Firebird
|
|
69
|
+
|
|
70
|
+
test_task_for :MariaDB, :files => FileList["test/db/mysql/*_test.rb"] do |test_task| #, :prereqs => 'db:mysql'
|
|
71
|
+
test_task.ruby_opts << '-rdb/mariadb_config'
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# ensure driver for these DBs is on your class-path
|
|
75
|
+
[ :Oracle, :DB2, :Informix, :CacheDB ].each do |adapter|
|
|
76
|
+
test_task_for adapter, :desc => "Run tests against #{adapter} (ensure driver is on class-path)"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
#test_task_for :MSSQL, :name => 'test_sqlserver', :driver => nil, :database_name => 'MS-SQL using SQLJDBC'
|
|
80
|
+
|
|
81
|
+
test_task_for :AS400, :desc => "Run tests against AS400 (DB2) (ensure driver is on class-path)",
|
|
82
|
+
:files => FileList["test/db2*_test.rb"] + FileList["test/db/db2/*_test.rb"]
|
|
83
|
+
|
|
84
|
+
#task :test_jdbc => [ :test_jdbc_mysql, :test_jdbc_derby ] if defined?(JRUBY_VERSION)
|
|
85
|
+
|
|
86
|
+
test_task_for 'JDBC', :desc => 'Run tests against plain JDBC adapter (uses MySQL and Derby)',
|
|
87
|
+
:prereqs => [ 'db:mysql' ], :files => FileList['test/*jdbc_*test.rb'] do |test_task|
|
|
88
|
+
test_task.libs << 'jdbc-mysql/lib' << 'jdbc-derby/lib'
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# TODO since Derby AR 5.x support is not implemented we only run JNDI with MySQL :
|
|
92
|
+
#task :test_jndi => [ :test_jndi_mysql, :test_jndi_derby ] if defined?(JRUBY_VERSION)
|
|
93
|
+
task :test_jndi => [ :test_jndi_mysql ] if defined?(JRUBY_VERSION)
|
|
94
|
+
|
|
95
|
+
jndi_classpath = [ 'test/jars/tomcat-juli.jar', 'test/jars/tomcat-catalina.jar' ]
|
|
96
|
+
|
|
97
|
+
jndi_classpath.each do |jar_path|
|
|
98
|
+
file(jar_path) { Rake::Task['tomcat-jndi:download'].invoke }
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
get_jndi_classpath_opt = lambda do
|
|
102
|
+
cp = jndi_classpath.map { |jar_path| File.expand_path("../#{jar_path}", File.dirname(__FILE__)) }
|
|
103
|
+
"-J-cp \"#{cp.join(File::PATH_SEPARATOR)}\""
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
test_task_for 'JNDI_Derby', :desc => 'Run tests against a Derby JNDI connection',
|
|
107
|
+
:prereqs => jndi_classpath, :files => FileList['test/*jndi_derby*test.rb'] do |test_task|
|
|
108
|
+
test_task.libs << 'jdbc-derby/lib'
|
|
109
|
+
test_task.ruby_opts << get_jndi_classpath_opt.call
|
|
110
|
+
#test_task.verbose = true
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
test_task_for 'JNDI_MySQL', :desc => 'Run tests against a MySQL JNDI connection',
|
|
114
|
+
:prereqs => [ 'db:mysql' ] + jndi_classpath, :files => FileList['test/*jndi_mysql*test.rb'] do |test_task|
|
|
115
|
+
test_task.libs << 'jdbc-mysql/lib'
|
|
116
|
+
test_task.ruby_opts << get_jndi_classpath_opt.call
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
test_task_for :MySQL, :name => 'test_jdbc_mysql',
|
|
120
|
+
:prereqs => 'db:mysql', :database_name => 'MySQL (using adapter: jdbc)' do |test_task|
|
|
121
|
+
test_task.ruby_opts << '-rdb/jdbc_mysql' # replaces require 'db/mysql'
|
|
122
|
+
end
|
|
123
|
+
test_task_for :PostgreSQL, :name => 'test_jdbc_postgresql', :driver => 'postgres',
|
|
124
|
+
:prereqs => 'db:postgresql', :database_name => 'PostgreSQL (using adapter: jdbc)' do |test_task|
|
|
125
|
+
test_task.ruby_opts << '-rdb/jdbc_postgres' # replaces require 'db/postgres'
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# NOTE: Sybase testing is currently broken, please fix it if you're on Sybase :
|
|
129
|
+
#test_task_for :Sybase, :desc => "Run tests against Sybase (using jTDS driver)"
|
|
130
|
+
#task :test_sybase_jtds => :test_sybase # alias
|
|
131
|
+
#test_task_for :Sybase, :name => 'sybase_jconnect',
|
|
132
|
+
# :desc => "Run tests against Sybase (ensure jConnect driver is on class-path)"
|
data/rakelib/db.rake
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
namespace :db do
|
|
2
|
+
|
|
3
|
+
desc "Creates the test database for MySQL"
|
|
4
|
+
task :mysql do
|
|
5
|
+
require File.expand_path('../../test/shared_helper', __FILE__)
|
|
6
|
+
fail "could not create test database: mysql executable not found" unless mysql = which('mysql')
|
|
7
|
+
|
|
8
|
+
load 'test/db/mysql_config.rb' # rescue nil
|
|
9
|
+
enc = MYSQL_CONFIG[:encoding] || 'utf8' # 'utf8mb4'
|
|
10
|
+
puts MYSQL_CONFIG.inspect if $VERBOSE
|
|
11
|
+
|
|
12
|
+
clean_script = sql_script <<-SQL, 'mysqlclean'
|
|
13
|
+
DROP USER #{MYSQL_CONFIG[:username]}@localhost;
|
|
14
|
+
SQL
|
|
15
|
+
|
|
16
|
+
script = sql_script <<-SQL, 'mysql'
|
|
17
|
+
DROP DATABASE IF EXISTS `#{MYSQL_CONFIG[:database]}`;
|
|
18
|
+
CREATE DATABASE `#{MYSQL_CONFIG[:database]}` DEFAULT CHARACTER SET `#{enc}` COLLATE `#{enc}_general_ci`;
|
|
19
|
+
CREATE USER #{MYSQL_CONFIG[:username]}@localhost IDENTIFIED BY '#{MYSQL_CONFIG[:password]}';
|
|
20
|
+
GRANT ALL PRIVILEGES ON `#{MYSQL_CONFIG[:database]}`.* TO #{MYSQL_CONFIG[:username]}@localhost;
|
|
21
|
+
GRANT ALL PRIVILEGES ON `test\_%`.* TO #{MYSQL_CONFIG[:username]}@localhost;
|
|
22
|
+
SQL
|
|
23
|
+
|
|
24
|
+
params = { '-u' => 'root' }
|
|
25
|
+
if ENV['DATABASE_YML']
|
|
26
|
+
require 'yaml'
|
|
27
|
+
params['-p'] = YAML.load(File.new(ENV['DATABASE_YML']))["production"]["password"]
|
|
28
|
+
end
|
|
29
|
+
params['-u'] = ENV['MY_USER'] if ENV['MY_USER']
|
|
30
|
+
params['-p'] = ENV['MY_PASSWORD'] if ENV['MY_PASSWORD']
|
|
31
|
+
|
|
32
|
+
puts "Creating MySQL (test) database: #{MYSQL_CONFIG[:database]}"
|
|
33
|
+
mysql_cmd = "#{mysql} -f #{params.map {|k, v| "#{k}#{v}"}.join(' ')}"
|
|
34
|
+
sh "cat #{clean_script.path} | #{mysql_cmd}", verbose: false
|
|
35
|
+
sh "cat #{script.path} | #{mysql_cmd}", verbose: $VERBOSE # so password is not echoed
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
desc "Creates the test database for PostgreSQL"
|
|
39
|
+
task :postgresql do
|
|
40
|
+
require File.expand_path('../../test/shared_helper', __FILE__)
|
|
41
|
+
fail 'could not create test database: psql executable not found' unless psql = which('psql')
|
|
42
|
+
fail 'could not create test database: missing "postgres" role' unless PostgresHelper.postgres_role?
|
|
43
|
+
|
|
44
|
+
load 'test/db/postgres_config.rb' # rescue nil
|
|
45
|
+
puts POSTGRES_CONFIG.inspect if $VERBOSE
|
|
46
|
+
|
|
47
|
+
script = sql_script <<-SQL, 'psql'
|
|
48
|
+
DROP DATABASE IF EXISTS #{POSTGRES_CONFIG[:database]};
|
|
49
|
+
DROP USER IF EXISTS #{POSTGRES_CONFIG[:username]};
|
|
50
|
+
CREATE USER #{POSTGRES_CONFIG[:username]} CREATEDB SUPERUSER LOGIN PASSWORD '#{POSTGRES_CONFIG[:password]}';
|
|
51
|
+
CREATE DATABASE #{POSTGRES_CONFIG[:database]} OWNER #{POSTGRES_CONFIG[:username]}
|
|
52
|
+
TEMPLATE template0
|
|
53
|
+
ENCODING '#{POSTGRES_CONFIG[:encoding]}' LC_COLLATE '#{POSTGRES_CONFIG[:collate]}' LC_CTYPE '#{POSTGRES_CONFIG[:collate]}';
|
|
54
|
+
SQL
|
|
55
|
+
|
|
56
|
+
params = { '-U' => ENV['PSQL_USER'] || 'postgres' }
|
|
57
|
+
params['-q'] = nil unless $VERBOSE
|
|
58
|
+
|
|
59
|
+
puts "Creating PostgreSQL (test) database: #{POSTGRES_CONFIG[:database]}"
|
|
60
|
+
sh "cat #{script.path} | #{psql} #{params.to_a.join(' ')}", verbose: $VERBOSE
|
|
61
|
+
end
|
|
62
|
+
task postgres: :postgresql
|
|
63
|
+
|
|
64
|
+
private
|
|
65
|
+
|
|
66
|
+
def sql_script(sql_content, name = 'sql_script')
|
|
67
|
+
require 'tempfile'; script = Tempfile.new(name)
|
|
68
|
+
script.puts sql_content
|
|
69
|
+
yield(script) if block_given?
|
|
70
|
+
script.close
|
|
71
|
+
at_exit { script.unlink }
|
|
72
|
+
script
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
end
|