2017-02-10 16 views
0

У меня есть две базы данных neo4j, работающие на двух разных хостах. Я подключил приложение rails к одному из них при создании приложения. Теперь я хочу использовать другую базу данных вместе с приложением. Как настроить приложение для подключения к базам данных?Используйте две базы neo4j в одном приложении rails

ответ

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 устанавливает Neo4j::ActiveBase.current_session для вас в railtie. Если вы установили Neo4j::ActiveBase.current_session после того, как приложение запустилось, оно переопределит то, что было в neo4j.yml. current_session должен быть объектом Neo4j::Core::CypherSession от драгоценного камня neo4j. (См. 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_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'

 Смежные вопросы

  • Нет связанных вопросов^_^