ActiveRecordでOrientDBのJDBCドライバを使用する適切な方法は何ですか?
Rails 3.2アプリケーションをOrientDB 1.4に接続しようとしています。宝石を取り付けました activerecord-jdbc-adapter
そして、 database.yml
次のように:
development:
adapter: jdbc
username: admin
password: admin
driver: com.orientechnologies.orient.jdbc.OrientJdbcDriver
url: jdbc:orient:local:db/test_db2
私は以下のようにOrientDBのJDBCドライバをロードします。
# in config/application.rb:
require "/home/myuser/jars/orientdb-jdbc-1.4.0-all.jar"
次の例外がアプリケーションの起動時にスローされています( 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)
...
設定に足りないものはありますか? ActiveRecordでOrientDBのJDBCドライバを使用する適切な方法は何ですか?
回答:
回答№1は1中 activerecord-jdbc-adapter
(理論的には)あらゆるJDBC対応ドライバをサポートします。それはAPIを使用し、少数の人にとってはうまくいかないかもしれないいくつかの仮定をします。特に以下のような完全に準拠していないドライバを使って orientdb-jdbc (少なくともバージョン1.4)です。
この場合、AR-JDBCはDBメタデータからサポートされている型を解決しようとします。 http://git.io/s7g47A しかしそれ以来 metadata.getTypeInfo()
予期せぬ結果を返す null
実際の代わりに ResulSet
オブジェクトはすべてひどく失敗します。これをオーバーライドすることで "null"型を扱うことで改善されるかもしれません native_database_types
Rubyのmethodや追加のコードAR-JDBC側 - OrientDBの「ドライバ」にとっては、AR-JDBCで完全に機能させるにはまだ十分ではないかもしれません... AR-JDBC拡張機能にはかなり適しているように思えます(OrientDBが処理できると仮定して) ActiveRecors / ARELが生成するSQL)