2016-07-01 33 views
1

我有一個軌道應用程序,我正在運行兩個服務器實例(不同的端口,不同的PID)。相同的Rails應用程序的不同實例,每個使用不同的數據庫

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

然而,我想他們每個連接到不同的mongodb數據庫(例如:分別db12345db54321,)。

問題是,我不知道這是否可能,如果是這樣,如何在我的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

謝謝!很高興知道!我在想別人可能會在那裏尋找答案。無論如何,謝謝你的幫助! –

相關問題