2016-07-01 28 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

谢谢!很高兴知道!我在想别人可能会在那里寻找答案。无论如何,谢谢你的帮助! –

相关问题