Ruby on rails 有人能解释一下database.yml文件的结构吗

Ruby on rails 有人能解释一下database.yml文件的结构吗,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我已经参考了RubyonRails指南和StackOverflow,了解了如何设置database.yml文件以及它们是如何设置的,但是我在使用特定的database.yml文件以及它们如何相互作用时遇到了一些障碍。参考RubyonRails指南并不能让我明白这一点。我希望有人能帮我填补空缺 以下是database.yml文件: development: db_host: qa-db.company_name.com db_port: 5432 db_name: company_st

我已经参考了RubyonRails指南和StackOverflow,了解了如何设置database.yml文件以及它们是如何设置的,但是我在使用特定的database.yml文件以及它们如何相互作用时遇到了一些障碍。参考RubyonRails指南并不能让我明白这一点。我希望有人能帮我填补空缺

以下是database.yml文件:

development:
  db_host: qa-db.company_name.com
  db_port: 5432
  db_name: company_staging
  db_user: rubyuser
  db_pass: generic_password

# Warning: The database defined as 'test' will be erased and
# re-generated from your development database when you run 'rake'.
# Do not set this db to the same as development or production.
test:
  db_host: qa-db.company_name.com
  db_port: 5432
  db_name: company_test
  db_user: rubyuser
  db_pass: generic_password

testing:
  db_host: host
  db_port: 5432
  db_name: company_staging
  db_user: rubyuser
  db_pass: normal_password

selenium:
  db_host: host
  db_port: 5432
  db_name: company_selenium
  db_user: ruby
  db_pass: normal_password

production:
  db_host: qa-db.company_name.com
  db_port: 5432
  #db_name: company_production
  db_name: company_staging
  db_user: ruby
  db_pass: generic_password
这就是我感到困惑的地方。这个文件中到底有多少个数据库?我指的是数据的实际副本。显而易见的答案是有五个数据库。但我不太确定

查看数据库开发、测试和生产。这三个数据库的db_主机指向qa_db.company_name.com。这告诉我这三个数据库指向相同的数据。开发、测试和生产包含相同的数据,这意味着如果我在测试中删除这些数据,开发和生产也将被删除。但是请注意,这三个数据库有不同的db_名称。请注意,开发和生产都将其db_名称命名为company_staging,而测试有company_test。这对数据有何影响?这些是不同的副本吗?db_名称的更改是否指向不同的内容

测试数据库具有db_host:host,名称为company_staging。如果我登录到这个。我会在哪个数据库中


这对我来说是一个模糊的领域,所以一些澄清将真正帮助我。谢谢。

在生产环境中,您将只定义一个数据库,除非您有使用多个不同数据库服务器的异常配置

在开发环境中,根据您的测试策略,您将有两个或三个。通常定义了
开发
测试
,其他的都省略了,因为它们不相关

在您的开发环境中定义
生产
并不是很有用,因为您首先不应该连接到该数据库,它应该受到严重的防火墙保护

通常,版本控制中不包括
config/database.yml
,而是包含某种“示例”文件。由于团队中的每个开发人员可能具有不同的凭据,因此最好省略此文件,而是使用自己的自定义版本,而不是冲突

我的建议是在服务器上存储特定于服务器的配置,并在部署时将其链接到正确的位置。例如,
shared/config/database.yml
通过类似的工具符号链接到
releases/nnnnnn/config/database.yml

database.yml
文件的长短是Rails将在其中查找与当前
Rails\u ENV
匹配的密钥,并将该配置用于与数据库的初始连接。在那里你可以有你想要的任何数量,但只有一个与你的环境相关