如何在Rails 4中正确设置database.yml文件

Ric*_*wis 12 ruby database ruby-on-rails heroku

我很好奇如何database.yml在Rails 4应用程序中正确设置我的文件.

这不是我真正详细研究过的东西,因为它在部署到Heroku时似乎都能正常工作,但我现在想要了解它,并注意到格式从Rails 4.0变为4.1.例如

4.0.2

development:
 adapter: mysql2
 encoding: utf8
 database: my_app_development
 pool: 5
 username: root
 password:

test:
 adapter: mysql2
 encoding: utf8
 database: my_app_test
 pool: 5
 username: root
 password:


production:
 adapter: mysql2
 encoding: utf8
 database: ymca_gym_production
 pool: 5
 username: root
 password:
Run Code Online (Sandbox Code Playgroud)

4.1.0

default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password:
  socket: /var/run/mysqld/mysqld.sock

development:
  <<: *default
    database: my_app_development


test:
  <<: *default
   database: my_app_test


 # On Heroku and other platform providers, you may have a full connection URL
 # available as an environment variable. For example:
 #
 #   DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
 #
 # You can use this database configuration with:
 #
 #   production:
 #      url: <%= ENV['DATABASE_URL'] %>
 #

 production:
   <<: *default
     database: my_app_production
     username: my_app
     password: <%= ENV['MY_APP_DATABASE_PASSWORD'] %>
Run Code Online (Sandbox Code Playgroud)

我的问题是

  1. 我应该在所有环境中设置用户名和密码吗?
  2. 我在Heroku上使用ClearDB作为我的数据库.url: <%= ENV['DATABASE_URL'] %>如评论所示,我应该用于制作吗?

der*_*yau 4

您发布的第二个database.yml实际上与第一个相同,它只是从开发块复制值。

回答您的其他问题:

1)我应该在所有环境中设置用户名和密码吗

如果您愿意,您可以这样做,或者您也可以像上面那样保留它,它从一个块中获取所有凭据。

2)如果我使用 Clear DB 和 Heroku 作为我的数据库,那么我应该取消注释吗

heroku 实际上完全忽略了这个文件(无论如何都不应该将其签入源代码管理)。Heroku 有自己的机制来处理数据库,您可以在此处阅读更多信息: https: //devcenter.heroku.com/articles/heroku-postgresql

本质上,将“heroku 的数据库”和您在此文件中定义的本地数据库完全不同地对待。