在Rails中管理数据库变量

时间:2014-02-18 14:00:32

标签: ruby-on-rails database-connection

我目前正在应用程序中实现多租户逻辑,虽然这很简单,但现在我已经厌倦了所有变量的长期存储。变量派生自Heroku database_url

def env_variables
  {
    host: ENV.fetch("#{@company_id}_DB_HOST"),
    port: ENV["#{@company_id}_DB_PORT"],
    username: ENV.fetch("#{@company_id}_DB_USERNAME"),
    password: ENV.fetch("#{@company_id}_DB_PASSWORD"),
    database: ENV.fetch("#{@company_id}_DB_DATABASE"),
  }
end

从ENV获取相关变量相当简单,但管理40-50个env变量可能会很痛苦。

我看到的选项

  1. 在ansible-script中设置ENV变量。我们已经做了一些事情。
  2. 将数据库变量存储在项目的文件中。可能更容易管理,但必须在生效之前部署。
  3. 我错过了一些很棒的解决方案吗?人们通常如何存储更多的数据库变量?

1 个答案:

答案 0 :(得分:0)

<强> ENV

虽然我确信你可以将数据存储在一个文件中,但我个人会将它们保存在ENV vars中(可能是Figaro

原因是ENV变量更深地存储在堆栈中(在OS中),因此实际上并不由Rails本身保存。如果公司ID不会改变(它们不是动态的),我只需将它们放入Figaro application.yml文件中:

#config/application.yml
156_DB_DATABASE: "db"
etc