2017-02-10 78 views
0

我有兩個neo4j數據庫在兩個不同的主機上運行。我在生成應用程序時將我的Rails應用程序連接到其中一個應用程序現在我想使用其他數據庫以及應用程序。我怎樣才能配置應用程序連接到兩個數據庫?在單軌應用程序中使用兩個neo4j數據庫

回答

0

目前沒有好的方法來配置一個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

布賴恩提到,我們目前無法配置一個Ruby進程在同一時間使用兩個會議。我們必須通過設置Neo4j::ActiveBase.current_session(請參閱:https://github.com/neo4jrb/neo4j/blob/master/lib/neo4j/active_base.rb

neo4j.yml爲您在railtie中設置Neo4j::ActiveBase.current_session。如果您在應用啓動後設置了Neo4j::ActiveBase.current_session,它將覆蓋neo4j.yml中的內容。 current_session需要是來自neo4j-core gem的Neo4j::Core::CypherSession對象。 (請參閱自述文件: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_adaptor = Neo4j::Core::CypherSession::Adaptors::HTTP.new('http://neo4j:7474',{wrap_level: :proc}) Neo4j::ActiveBase.current_session = Neo4j::Core::CypherSession.new(http_adaptor)

這究竟會在'http://neo4j:7474'

建立與所需的數據庫會話包裹
相關問題