/ / Utilizzando il driver JDBC di OrientDB con ActiveRecord - ruby-on-rails, activerecord, jdbc, jruby, orientdb

Utilizzando il driver JDBC di OrientDB con ActiveRecord - ruby-on-rails, activerecord, jdbc, jruby, orientdb

Qual è il modo corretto di utilizzare il driver JDBC di OrientDB con ActiveRecord?

Sto cercando di connettere un'applicazione Rails 3.2 a OrientDB 1.4. Ho installato la gemma activerecord-jdbc-adaptere configurato il database.yml come segue:

development:
adapter: jdbc
username: admin
password: admin
driver:   com.orientechnologies.orient.jdbc.OrientJdbcDriver
url:      jdbc:orient:local:db/test_db2

Carico il driver JDBC di OrientDB come segue:

# in config/application.rb:
require "/home/myuser/jars/orientdb-jdbc-1.4.0-all.jar"

La seguente eccezione viene lanciata all'avvio dell'applicazione (utilizzando rails s):

java.lang.NullPointerException
at arjdbc.jdbc.RubyJdbcConnection.unmarshalResult(RubyJdbcConnection.java:1187)
at arjdbc.jdbc.RubyJdbcConnection.set_native_database_types(RubyJdbcConnection.java:537)
at arjdbc.jdbc.RubyJdbcConnection$INVOKER$i$0$0$set_native_database_types.call(RubyJdbcConnection$INVOKER$i$0$0$set_native_database_types.gen)
...

C'è qualcosa che manca nella mia configurazione? Qual è il modo corretto di utilizzare il driver JDBC di OrientDB con ActiveRecord?

risposte:

1 per risposta № 1

Mentre activerecord-jdbc-adapter (teoricamente) supporta qualsiasi driver compilatore JDBC, utilizza le API e formula alcune ipotesi che potrebbero non funzionare per alcuni. Esp. con driver non pienamente compatibili come OrientDB-jdbc (almeno la versione 1.4) è.

In questo caso AR-JDBC tenta di risolvere i tipi supportati dai metadati DB: http://git.io/s7g47A ma da allora metadata.getTypeInfo() restituisce un imprevisto null invece di un reale ResulSet oggetto tutto fallisce male. Questo potrebbe essere migliorato gestendo i tipi "null" sovrascrivendo native_database_types metodo in Ruby e / o qualche altro codice suLato AR-JDBC - anche se per il "driver" di OrientDB "potrebbe non essere sufficiente per farlo funzionare perfettamente con AR-JDBC ... sembra un ottimo adattamento per un'estensione AR-JDBC (supponendo che OrientDB possa gestire l'SQL generato da ActiveRecors / AREL).