2015-01-13 4 views
3

Я использую этот конфиг для подключения к MongoDB с MongoMapper в моем приложении Синатры:MongoDB MongoMapper Рубин Replica Set Config

MongoMapper.connection = Mongo::Connection.new('localhost', 27017)

Теперь у меня есть копия набор с 2 mongos на отдельных серверах, 10.5. 5.5 и 10.5.5.6. Как настроить соединение с обоими монгорами? Как добавить аутентификацию к этому соединению?

+0

, пожалуйста, примите один из ответов, чтобы отметить этот вопрос для других, как было решено! –

ответ

1

я в конечном итоге делает это:

MongoMapper.connection = Mongo::MongoReplicaSetClient.new( ['10.5.5.5:27017', '10.5.5.6:27017'], :read => :primary, :rs_name => 'name', :connect_timeout => 30, :op_timeout => 30 ) MongoMapper.database = "db_name" MongoMapper.database.authenticate("user", "test123")

Работает красиво.

1

У вас должно быть установлено другое соединение per model. Но я думаю, это не совсем то, что вы пытаетесь сделать.

class MyModel 
    include MongoMapper::Document 
    connection(Mongo::Connection.new('localhost', 27017)) 
    set_database_name "my_database" 
    # ... 
end 

Или есть ReplSetConnection с этим вы можете установить репликаций наборы:

MongoMapper.connection = Mongo::ReplicaSetConnection.new(['10.5.5.5', 30000], [' 10.5.5.6', 30000]) 

И аутентификация проста:

MongoMapper.connection = Mongo::Connection.new('localhost', 27017) 
MongoMapper.database = "DBNAME" 
MongoMapper.database.authenticate("USERNAME", "PASSWORD") 
+0

Спасибо Sir l33tname, выглядит почти хорошо. Я разместил решение ниже. Я не уверен, что такое RetryReplicaSetConnection, но это может сработать. – Vidar

+0

@ Vidar shit, извините, конечно, это ReplicaSetConnection, а не RetryReplicaSetConnection, но есть сущность для автоматического перехода на другой ресурс https://gist.github.com/bhbryant/1230938, который использует RetryReplicaSetConnection –