ActiveRecord DB2 JDBC driver error: undefined method `downcase' for
nil:NilClass (NoMethodError)
------------------------------------------------------------------------------------------------
Key: JRUBY-5976
URL: https://jira.codehaus.org/browse/JRUBY-5976
Project: JRuby
Issue Type: Bug
Components: Application Error
Affects Versions: JRuby 1.6.3
Environment: Windows XP, IBM DB2 on AS/400
Reporter: Christian Nilsson
Fix For: JRuby 1.6.3
Connecting from a windows machine to a remote DB2 database running on a
Mainframe with AS/400 using the following code, based on code from "Using
JRuby, Bringing Ruby to Java" book:
{code:title=activerecord.db2.rb}
require 'rubygems'
require 'active_record'
ActiveRecord::Base.establish_connection(
:adapter => 'jdbc',
:driver => 'com.ibm.db2.jcc.DB2Driver',
:url => 'jdbc:db2://<ip>:<port>/<database name>',
:username => '<username>',
:password => '<password>',
:database => '<database name>'
)
p ActiveRecord::Base.connection.execute("select * from <scheme>.<table>")
{code}
Results in the following error:
{code}
RuntimeError: The driver encountered an unknown error: undefined method
`downcase' for nil:NilClass (NoMethodError)
initialize at
c:/jruby/lib/ruby/gems/1.8/gems/activerecord-jdbc-adapter-1.0.3-java/lib/arjdbc/jdbc/connection.rb:93
initialize at
c:/jruby/lib/ruby/gems/1.8/gems/activerecord-jdbc-adapter-1.0.3-java/lib/arjdbc/jdbc/adapter.rb:31
jdbc_connection at
c:/jruby/lib/ruby/gems/1.8/gems/activerecord-jdbc-adapter-1.0.3-java/lib/arjdbc/jdbc/connection_methods.rb:6
__send__ at org/jruby/RubyBasicObject.java:1690 send at
org/jruby/RubyKernel.java:2117
new_connection at
c:/jruby/lib/ruby/gems/1.8/gems/activerecord-2.3.12/lib/active_record/connection_adapters/abstract/connection_pool.rb:223
checkout_new_connection at
c:/jruby/lib/ruby/gems/1.8/gems/activerecord-2.3.12/lib/active_record/connection_adapters/abstract/connection_pool.rb:245
checkout at
c:/jruby/lib/ruby/gems/1.8/gems/activerecord-2.3.12/lib/active_record/connection_adapters/abstract/connection_pool.rb:188
loop at org/jruby/RubyKernel.java:1419
checkout at
c:/jruby/lib/ruby/gems/1.8/gems/activerecord-2.3.12/lib/active_record/connection_adapters/abstract/connection_pool.rb:184
mon_synchronize at c:/jruby/lib/ruby/1.9/monitor.rb:201
checkout at
c:/jruby/lib/ruby/gems/1.8/gems/activerecord-2.3.12/lib/active_record/connection_adapters/abstract/connection_pool.rb:183
connection at
c:/jruby/lib/ruby/gems/1.8/gems/activerecord-2.3.12/lib/active_record/connection_adapters/abstract/connection_pool.rb:98
retrieve_connection at
c:/jruby/lib/ruby/gems/1.8/gems/activerecord-2.3.12/lib/active_record/connection_adapters/abstract/connection_pool.rb:326
retrieve_connection at
c:/jruby/lib/ruby/gems/1.8/gems/activerecord-2.3.12/lib/active_record/connection_adapters/abstract/connection_specification.rb:123
connection at
c:/jruby/lib/ruby/gems/1.8/gems/activerecord-2.3.12/lib/active_record/connection_adapters/abstract/connection_specification.rb:115
(root) at activerecord.db2.rb:14
{code}
Interestingly, I am able to connect to the same DB2 database using a datasource
through a connection pool via jndi when deployed on a WebLogic app server. This
is great but we use jruby for other standalone apps as well...
Output after running: jruby --version
jruby 1.6.3 (ruby-1.9.2-p136) (2011-07-07 965162f) (Java HotSpot(TM) Client VM
1.6.0_21) [Windows XP-x86-java]
Database drivers(db2jcc.jar, db2jcc_license_cisuz.jar) are located in same dir
as activerecord.db2.rb. The same database drivers work with a Java application.
Error originally "discovered" during database configuration in database.yml
file for a rails web app.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email