2017-02-10 6 views
0

2つの異なるホスト上で2つのneo4jデータベースを実行しています。私はアプリを生成しながら自分のレールアプリをそれらの1つに接続しました。今私は他のデータベースと同様にアプリケーションを使いたい。両方のデータベースに接続するようにアプリを設定するにはどうすればよいですか?シングルレールアプリケーションで2つのneo4jデータベースを使用

答えて

0

現在、2つのセッションを同時に使用するように1つのRubyプロセスを設定する方法はありません。 Railsを使用している場合は、NEO4J_URL環境変数を設定してサーバーを変更できます。それ以外の場合は、Neo4j :: ActiveBase.current_sessionまたはNeo4j :: ActiveBase.on_establish_session(マルチスレッドプロセスを実行している場合には新しいスレッドごとにセッションを設定する)を設定してセッションを管理する必要があります。

参照してください:https://github.com/neo4jrb/neo4j/blob/master/lib/neo4j/active_base.rb

0

ブライアンは現在、我々は同時に2つのセッションを使用する1つのRubyプロセスを設定することはできません述べたように。 Neo4j::ActiveBase.current_sessionhttps://github.com/neo4jrb/neo4j/blob/master/lib/neo4j/active_base.rb参照)を設定してセッションを管理する必要があります。

neo4j.ymlは、あなたのためにNeo4j::ActiveBase.current_sessionをあなたのために設定します。アプリが起動した後にNeo4j::ActiveBase.current_sessionを設定すると、neo4j.ymlの内容が上書きされます。 current_sessionはneo4j-core gemのNeo4j::Core::CypherSessionオブジェクトである必要があります。 (readme:https://github.com/neo4jrb/neo4j-coreを参照してください)

現在、neo4jは各モデルに対して異なるセッションを持つことをサポートしていません。したがって、セッションをモデル内に設定すると、問題が発生する可能性があります。より良い方法は、アプリケーションの通常の実行時にセッションを設定することです。 Neo4j::Core::CypherSessionをラップしてNeo4j::Core objectsの代わりにクエリプロキシを取得することもできます。これにはアダプタを宣言するときにwrap_level: :procを指定する必要があります。 (参照してください:https://github.com/neo4jrb/neo4j/blob/master/lib/neo4j/session_manager.rb#L14)を

をのですべてに、ここにあなたが'http://neo4j:7474'

で目的のデータベースに包まれたセッションを確立します

http_adaptor = Neo4j::Core::CypherSession::Adaptors::HTTP.new('http://neo4j:7474',{wrap_level: :proc}) Neo4j::ActiveBase.current_session = Neo4j::Core::CypherSession.new(http_adaptor)

これを行うために必要なものです

関連する問題