同一个Rails应用程序的不同实例,每个实例使用不同的数据库

时间:2016-07-01 08:49:27

标签: ruby-on-rails mongodb

我有一个rails应用程序,我正在运行两个服务器实例(不同的端口,不同的PID)。

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 个答案:

答案 0 :(得分: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' %>