2016-07-01 1 views
1

У меня есть приложение rails, в котором я запускаю два экземпляра сервера (разные порты, разные PID).Различные экземпляры одного и того же приложения Rails, каждый из которых использует другую базу данных

rails s -p 8081 -P 12345 
rails s -p 8082 -P 54321 

Однако, я хотел бы каждый из них, чтобы подключиться к другой базе данных MongoDB (например: db12345 и db54321, соответственно).

Проблема в том, что я не знаю, возможно ли это, и если да, то как указать его в моем конфигурационном файле mongoid.yml.

Соответствующий раздел моего файла mongoid.yml, что позволяет мне использовать базу данных db12345, в настоящее время выглядит следующим образом:

development: 
    options: 
    raise_not_found_error: false 
    sessions: 
    default: 
     database: **db12345** 
     hosts: 
     - localhost:27017 
     options: 
     max_retries: 30 
     retry_interval: 1 
     timeout: 15 
     refresh_interval: 10 

Что у меня возникли проблемы с это найти способ связать каждый экземпляр то же приложение rails к (другой) базе данных, которое оно должно использовать. Означает ли это, что это должно решаться в mongoid.yml?

Спасибо!

ответ

1

Вы можете контролировать это через переменные среды. Были ли ваши приложения запущены таким образом:

DBNAME=db12345 rails s -p 8081 -P 12345 
DBNAME=db54321 rails s -p 8082 -P 54321 

Тогда просто сослаться на этот вар в mongoid.yml, с вменяемым по умолчанию:

sessions: 
    default: 
     database: <%= ENV['DBNAME'] || 'db12345' %> 
+0

Это именно то, что я искал! Спасибо огромное! Существует также связанный с этим вопрос dba stackexchange. Я не знаю, как это работает, но если вы хотите, вы тоже можете ответить на этот вопрос. Вот ссылка: https://dba.stackexchange.com/questions/142445/different-instances-of-the-same-rails-app-each-using-a-different-mongo-database –

+1

@MT: перекрестный вызов не рекомендуется на stackexchange. Но этот вопрос действительно похож на действительный материал DBA, поэтому я также опубликую ответ. –

+0

Спасибо! Хорошо знать! Я думал, что другие могут найти ответ. В любом случае, спасибо за вашу помощь! –

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