我最近升级到了最新版本的Rails,并且不明白如何将应用程序部署到Heroku。
这是我的database.yml
file
default: &default
adapter: postgresql
pool: 5
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
test:
<<: *default
database: db/test.sqlite3
production:
<<: *default
database: db/production.sqlite3
我以前从未在database.yml 中见过这种语法。有谁知道如何配置这个?
它看起来和我习惯的有很大不同
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:
Thanks
我不知道这是否正是您想要的,但我自己花了一段时间才弄清楚这一点,所以我想我应该将其发布在这里。
ActiveRecord 支持从环境变量获取数据库连接信息DATABASE_URL
以及来自database.yml 文件。到底在任何情况下使用哪一个可能有点棘手。幸运的是,这已经大部分得到解决 - 请参阅this https://github.com/rails/rails/pull/13582大多数细节的拉取请求。
简而言之,如果您的database.yml中没有url键,那么信息DATABASE_URL
自动覆盖database.yml中它可以设置的所有内容,这些内容出现在URL中,包括用户名、密码、服务器、端口、适配器和数据库名称。如果database.yml中有一个url键,那么它会覆盖DATABASE_URL
env var 以及与database.yml 条目中它冲突的所有其他内容。
由于 Heroku 设置了完整的DATABASE_URL
自动地,基本上除了池和编码之外的所有内容都是从中获取的,并且 database.yml 的生产部分中其他内容的条目将被忽略。因此,您可以将它们留空,或者在您的开发计算机上设置对您来说更方便的任何内容。
由于可以将ERB放入yml文件中,一些来源 http://guides.rubyonrails.org/configuring.html#configuring-a-database建议您明确放置
production:
url: <%= ENV['DATABASE_URL'] %>
在您的database.yml中显式地将url设置为环境变量。这使得更清楚的是,环境变量中的任何内容都意味着覆盖 yml 中的所有内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)