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.
Files changed (198) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +35 -0
  3. data/.travis.yml +100 -0
  4. data/.yardopts +4 -0
  5. data/CONTRIBUTING.md +50 -0
  6. data/Gemfile +92 -0
  7. data/History.md +1191 -0
  8. data/LICENSE.txt +26 -0
  9. data/README.md +240 -0
  10. data/RUNNING_TESTS.md +127 -0
  11. data/Rakefile +336 -0
  12. data/Rakefile.jdbc +20 -0
  13. data/activerecord-jdbc-adapter.gemspec +55 -0
  14. data/activerecord-jdbc-alt-adapter.gemspec +56 -0
  15. data/lib/active_record/connection_adapters/as400_adapter.rb +2 -0
  16. data/lib/active_record/connection_adapters/db2_adapter.rb +1 -0
  17. data/lib/active_record/connection_adapters/derby_adapter.rb +1 -0
  18. data/lib/active_record/connection_adapters/firebird_adapter.rb +1 -0
  19. data/lib/active_record/connection_adapters/h2_adapter.rb +1 -0
  20. data/lib/active_record/connection_adapters/hsqldb_adapter.rb +1 -0
  21. data/lib/active_record/connection_adapters/informix_adapter.rb +1 -0
  22. data/lib/active_record/connection_adapters/jdbc_adapter.rb +1 -0
  23. data/lib/active_record/connection_adapters/jndi_adapter.rb +1 -0
  24. data/lib/active_record/connection_adapters/mariadb_adapter.rb +1 -0
  25. data/lib/active_record/connection_adapters/mssql_adapter.rb +1 -0
  26. data/lib/active_record/connection_adapters/mysql2_adapter.rb +1 -0
  27. data/lib/active_record/connection_adapters/mysql_adapter.rb +1 -0
  28. data/lib/active_record/connection_adapters/postgresql_adapter.rb +1 -0
  29. data/lib/active_record/connection_adapters/sqlite3_adapter.rb +1 -0
  30. data/lib/active_record/connection_adapters/sqlserver_adapter.rb +1 -0
  31. data/lib/activerecord-jdbc-adapter.rb +1 -0
  32. data/lib/arel/visitors/compat.rb +60 -0
  33. data/lib/arel/visitors/db2.rb +137 -0
  34. data/lib/arel/visitors/derby.rb +112 -0
  35. data/lib/arel/visitors/firebird.rb +79 -0
  36. data/lib/arel/visitors/h2.rb +25 -0
  37. data/lib/arel/visitors/hsqldb.rb +32 -0
  38. data/lib/arel/visitors/postgresql_jdbc.rb +6 -0
  39. data/lib/arel/visitors/sql_server.rb +225 -0
  40. data/lib/arel/visitors/sql_server/ng42.rb +294 -0
  41. data/lib/arel/visitors/sqlserver.rb +214 -0
  42. data/lib/arjdbc.rb +19 -0
  43. data/lib/arjdbc/abstract/connection_management.rb +35 -0
  44. data/lib/arjdbc/abstract/core.rb +74 -0
  45. data/lib/arjdbc/abstract/database_statements.rb +64 -0
  46. data/lib/arjdbc/abstract/statement_cache.rb +58 -0
  47. data/lib/arjdbc/abstract/transaction_support.rb +86 -0
  48. data/lib/arjdbc/db2.rb +4 -0
  49. data/lib/arjdbc/db2/adapter.rb +789 -0
  50. data/lib/arjdbc/db2/as400.rb +130 -0
  51. data/lib/arjdbc/db2/column.rb +167 -0
  52. data/lib/arjdbc/db2/connection_methods.rb +44 -0
  53. data/lib/arjdbc/derby.rb +3 -0
  54. data/lib/arjdbc/derby/active_record_patch.rb +13 -0
  55. data/lib/arjdbc/derby/adapter.rb +540 -0
  56. data/lib/arjdbc/derby/connection_methods.rb +20 -0
  57. data/lib/arjdbc/derby/schema_creation.rb +15 -0
  58. data/lib/arjdbc/discover.rb +104 -0
  59. data/lib/arjdbc/firebird.rb +4 -0
  60. data/lib/arjdbc/firebird/adapter.rb +434 -0
  61. data/lib/arjdbc/firebird/connection_methods.rb +23 -0
  62. data/lib/arjdbc/h2.rb +3 -0
  63. data/lib/arjdbc/h2/adapter.rb +303 -0
  64. data/lib/arjdbc/h2/connection_methods.rb +27 -0
  65. data/lib/arjdbc/hsqldb.rb +3 -0
  66. data/lib/arjdbc/hsqldb/adapter.rb +297 -0
  67. data/lib/arjdbc/hsqldb/connection_methods.rb +28 -0
  68. data/lib/arjdbc/hsqldb/explain_support.rb +35 -0
  69. data/lib/arjdbc/hsqldb/schema_creation.rb +11 -0
  70. data/lib/arjdbc/informix.rb +5 -0
  71. data/lib/arjdbc/informix/adapter.rb +162 -0
  72. data/lib/arjdbc/informix/connection_methods.rb +9 -0
  73. data/lib/arjdbc/jdbc.rb +59 -0
  74. data/lib/arjdbc/jdbc/adapter.rb +475 -0
  75. data/lib/arjdbc/jdbc/adapter_require.rb +46 -0
  76. data/lib/arjdbc/jdbc/base_ext.rb +15 -0
  77. data/lib/arjdbc/jdbc/callbacks.rb +53 -0
  78. data/lib/arjdbc/jdbc/column.rb +97 -0
  79. data/lib/arjdbc/jdbc/connection.rb +14 -0
  80. data/lib/arjdbc/jdbc/connection_methods.rb +37 -0
  81. data/lib/arjdbc/jdbc/error.rb +65 -0
  82. data/lib/arjdbc/jdbc/extension.rb +59 -0
  83. data/lib/arjdbc/jdbc/java.rb +13 -0
  84. data/lib/arjdbc/jdbc/railtie.rb +2 -0
  85. data/lib/arjdbc/jdbc/rake_tasks.rb +3 -0
  86. data/lib/arjdbc/jdbc/serialized_attributes_helper.rb +3 -0
  87. data/lib/arjdbc/jdbc/type_cast.rb +166 -0
  88. data/lib/arjdbc/jdbc/type_converter.rb +142 -0
  89. data/lib/arjdbc/mssql.rb +7 -0
  90. data/lib/arjdbc/mssql/adapter.rb +384 -0
  91. data/lib/arjdbc/mssql/column.rb +29 -0
  92. data/lib/arjdbc/mssql/connection_methods.rb +79 -0
  93. data/lib/arjdbc/mssql/database_statements.rb +134 -0
  94. data/lib/arjdbc/mssql/errors.rb +6 -0
  95. data/lib/arjdbc/mssql/explain_support.rb +129 -0
  96. data/lib/arjdbc/mssql/extensions.rb +36 -0
  97. data/lib/arjdbc/mssql/limit_helpers.rb +231 -0
  98. data/lib/arjdbc/mssql/lock_methods.rb +77 -0
  99. data/lib/arjdbc/mssql/old_adapter.rb +804 -0
  100. data/lib/arjdbc/mssql/old_column.rb +200 -0
  101. data/lib/arjdbc/mssql/quoting.rb +101 -0
  102. data/lib/arjdbc/mssql/schema_creation.rb +31 -0
  103. data/lib/arjdbc/mssql/schema_definitions.rb +74 -0
  104. data/lib/arjdbc/mssql/schema_statements.rb +329 -0
  105. data/lib/arjdbc/mssql/transaction.rb +69 -0
  106. data/lib/arjdbc/mssql/types.rb +52 -0
  107. data/lib/arjdbc/mssql/types/binary_types.rb +33 -0
  108. data/lib/arjdbc/mssql/types/date_and_time_types.rb +134 -0
  109. data/lib/arjdbc/mssql/types/deprecated_types.rb +40 -0
  110. data/lib/arjdbc/mssql/types/numeric_types.rb +71 -0
  111. data/lib/arjdbc/mssql/types/string_types.rb +56 -0
  112. data/lib/arjdbc/mssql/utils.rb +66 -0
  113. data/lib/arjdbc/mysql.rb +3 -0
  114. data/lib/arjdbc/mysql/adapter.rb +140 -0
  115. data/lib/arjdbc/mysql/connection_methods.rb +166 -0
  116. data/lib/arjdbc/oracle/adapter.rb +863 -0
  117. data/lib/arjdbc/postgresql.rb +3 -0
  118. data/lib/arjdbc/postgresql/adapter.rb +687 -0
  119. data/lib/arjdbc/postgresql/base/array_decoder.rb +26 -0
  120. data/lib/arjdbc/postgresql/base/array_encoder.rb +25 -0
  121. data/lib/arjdbc/postgresql/base/array_parser.rb +95 -0
  122. data/lib/arjdbc/postgresql/base/pgconn.rb +11 -0
  123. data/lib/arjdbc/postgresql/column.rb +51 -0
  124. data/lib/arjdbc/postgresql/connection_methods.rb +67 -0
  125. data/lib/arjdbc/postgresql/name.rb +24 -0
  126. data/lib/arjdbc/postgresql/oid_types.rb +266 -0
  127. data/lib/arjdbc/railtie.rb +11 -0
  128. data/lib/arjdbc/sqlite3.rb +3 -0
  129. data/lib/arjdbc/sqlite3/adapter.rb +678 -0
  130. data/lib/arjdbc/sqlite3/connection_methods.rb +59 -0
  131. data/lib/arjdbc/sybase.rb +2 -0
  132. data/lib/arjdbc/sybase/adapter.rb +47 -0
  133. data/lib/arjdbc/tasks.rb +13 -0
  134. data/lib/arjdbc/tasks/database_tasks.rb +31 -0
  135. data/lib/arjdbc/tasks/databases.rake +48 -0
  136. data/lib/arjdbc/tasks/db2_database_tasks.rb +104 -0
  137. data/lib/arjdbc/tasks/derby_database_tasks.rb +95 -0
  138. data/lib/arjdbc/tasks/h2_database_tasks.rb +31 -0
  139. data/lib/arjdbc/tasks/hsqldb_database_tasks.rb +70 -0
  140. data/lib/arjdbc/tasks/jdbc_database_tasks.rb +169 -0
  141. data/lib/arjdbc/tasks/mssql_database_tasks.rb +46 -0
  142. data/lib/arjdbc/util/quoted_cache.rb +60 -0
  143. data/lib/arjdbc/util/serialized_attributes.rb +98 -0
  144. data/lib/arjdbc/util/table_copier.rb +110 -0
  145. data/lib/arjdbc/version.rb +3 -0
  146. data/lib/generators/jdbc/USAGE +9 -0
  147. data/lib/generators/jdbc/jdbc_generator.rb +17 -0
  148. data/lib/jdbc_adapter.rb +2 -0
  149. data/lib/jdbc_adapter/rake_tasks.rb +4 -0
  150. data/lib/jdbc_adapter/version.rb +4 -0
  151. data/pom.xml +114 -0
  152. data/rails_generators/jdbc_generator.rb +15 -0
  153. data/rails_generators/templates/config/initializers/jdbc.rb +10 -0
  154. data/rails_generators/templates/lib/tasks/jdbc.rake +11 -0
  155. data/rakelib/01-tomcat.rake +51 -0
  156. data/rakelib/02-test.rake +132 -0
  157. data/rakelib/bundler_ext.rb +11 -0
  158. data/rakelib/db.rake +75 -0
  159. data/rakelib/rails.rake +223 -0
  160. data/src/java/arjdbc/ArJdbcModule.java +276 -0
  161. data/src/java/arjdbc/db2/DB2Module.java +76 -0
  162. data/src/java/arjdbc/db2/DB2RubyJdbcConnection.java +126 -0
  163. data/src/java/arjdbc/derby/DerbyModule.java +178 -0
  164. data/src/java/arjdbc/derby/DerbyRubyJdbcConnection.java +152 -0
  165. data/src/java/arjdbc/firebird/FirebirdRubyJdbcConnection.java +174 -0
  166. data/src/java/arjdbc/h2/H2Module.java +50 -0
  167. data/src/java/arjdbc/h2/H2RubyJdbcConnection.java +85 -0
  168. data/src/java/arjdbc/hsqldb/HSQLDBModule.java +73 -0
  169. data/src/java/arjdbc/informix/InformixRubyJdbcConnection.java +75 -0
  170. data/src/java/arjdbc/jdbc/AdapterJavaService.java +43 -0
  171. data/src/java/arjdbc/jdbc/Callable.java +44 -0
  172. data/src/java/arjdbc/jdbc/ConnectionFactory.java +45 -0
  173. data/src/java/arjdbc/jdbc/DataSourceConnectionFactory.java +156 -0
  174. data/src/java/arjdbc/jdbc/DriverConnectionFactory.java +63 -0
  175. data/src/java/arjdbc/jdbc/DriverWrapper.java +119 -0
  176. data/src/java/arjdbc/jdbc/JdbcResult.java +130 -0
  177. data/src/java/arjdbc/jdbc/RubyConnectionFactory.java +61 -0
  178. data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +3979 -0
  179. data/src/java/arjdbc/mssql/MSSQLModule.java +90 -0
  180. data/src/java/arjdbc/mssql/MSSQLRubyJdbcConnection.java +508 -0
  181. data/src/java/arjdbc/mysql/MySQLModule.java +152 -0
  182. data/src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java +294 -0
  183. data/src/java/arjdbc/oracle/OracleModule.java +80 -0
  184. data/src/java/arjdbc/oracle/OracleRubyJdbcConnection.java +455 -0
  185. data/src/java/arjdbc/postgresql/ByteaUtils.java +157 -0
  186. data/src/java/arjdbc/postgresql/PgDateTimeUtils.java +52 -0
  187. data/src/java/arjdbc/postgresql/PostgreSQLModule.java +77 -0
  188. data/src/java/arjdbc/postgresql/PostgreSQLResult.java +192 -0
  189. data/src/java/arjdbc/postgresql/PostgreSQLRubyJdbcConnection.java +948 -0
  190. data/src/java/arjdbc/sqlite3/SQLite3Module.java +73 -0
  191. data/src/java/arjdbc/sqlite3/SQLite3RubyJdbcConnection.java +525 -0
  192. data/src/java/arjdbc/util/CallResultSet.java +826 -0
  193. data/src/java/arjdbc/util/DateTimeUtils.java +699 -0
  194. data/src/java/arjdbc/util/ObjectSupport.java +65 -0
  195. data/src/java/arjdbc/util/QuotingUtils.java +137 -0
  196. data/src/java/arjdbc/util/StringCache.java +63 -0
  197. data/src/java/arjdbc/util/StringHelper.java +145 -0
  198. metadata +269 -0
@@ -0,0 +1,3 @@
1
+ module ArJdbc
2
+ VERSION = '50.3.0'
3
+ end
@@ -0,0 +1,9 @@
1
+ Description:
2
+ Creates stubs that ensure AR-JDBC is bootstrapped in your Rails application.
3
+
4
+ Example:
5
+ ./script/generate jdbc
6
+
7
+ This will create:
8
+ config/initializers/jdbc.rb
9
+ lib/tasks/jdbc.rake
@@ -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
@@ -0,0 +1,2 @@
1
+ require 'arjdbc'
2
+ ArJdbc.deprecate "require 'arjdbc' instead of 'jdbc_adapter'"
@@ -0,0 +1,4 @@
1
+ require 'arjdbc/tasks.rb'
2
+
3
+ require 'arjdbc'
4
+ ArJdbc.deprecate "load 'arjdbc/tasks.rb' instead of 'jdbc_adapter/rake_tasks.rb'"
@@ -0,0 +1,4 @@
1
+ require 'arjdbc/version'
2
+
3
+ require 'arjdbc'
4
+ ArJdbc.deprecate "require 'arjdbc/version' instead of 'jdbc_adapter/version'"
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)"
@@ -0,0 +1,11 @@
1
+ module Bundler
2
+ class GemHelper
3
+ def guard_already_tagged
4
+ # parent project performs the tag
5
+ end
6
+ def tag_version
7
+ Bundler.ui.confirm "Parent project tagged #{version_tag}"
8
+ yield if block_given?
9
+ end
10
+ end
11
+ end
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