假设我有不同的数据库连接......
现在为了这个例子的目的,让我们只关注开发。当我运行“rake db:setup”时,它只会创建开发,因为从 rake 任务的角度来看,另一个连接是另一个环境。我可以传入另一个连接作为 RAILS_ENV 来创建数据库。但是,问题在于我们如何定义数据库连接。我宁愿不撤消此操作,因为它使管理和部署更加容易。我们所做的是这...
在我们的 database.yml 中,我们添加了以下代码。
databases_file = File.join(Rails.root.to_s, "config", "databases", "#{Rails.env.to_s}.yml")
IO.read(databases_file) if File.exist?(databases_file)
然后在 config 下的数据库子文件夹中,我们创建了不同的环境 yml 文件。
所以在 development.yml 我们有...
development:
... details ...
logging:
... details ...
现在,如果我将 RAILS_ENV 设置为“日志记录”,它将永远不会加载该文件,因为该文件称为 development.yml。因此它永远不会找到日志连接。
如果我将所有这些设置合并回 database.yml 文件,那么我们将回到不将 database.yml 签入 git repo 并且必须在开发机器上为新员工等手动创建它。我们还必须更改我们的部署过程以开始将文件放置在较低的环境中。(我们的生产过程已经支持这一点)