2017-02-10 76 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'

建立与所需的数据库会话包裹
相关问题