如何配置database.yml以部署到Heroku

Dar*_*use 5 database ruby-on-rails heroku

我最近升级到了最新版本的Rails,但我不知道如何将应用程序部署到Heroku。

这是我的database.yml档案

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
Run Code Online (Sandbox Code Playgroud)

我以前从未在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:
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 2

对于 Heroku,您必须使用 postgresql,因为它不支持 mysql2。Heroku 有自己的数据库处理机制,您可以在此处阅读更多信息: https: //devcenter.heroku.com/articles/heroku-postgresql

本质上,将“heroku 的数据库”和您在此文件中定义的本地数据库完全不同地对待。您可以更轻松地将 sqlite 用于本地和测试环境,而对于生产环境,您应该将 yaml 代码更改为:

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

test:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

production:
      adapter: postgresql
      database: my_database_production
      pool: 5
      timeout: 5000
Run Code Online (Sandbox Code Playgroud)

上面的代码还不足以让它在heroku上运行,您还需要编辑gemfile内容,如下所示:

gem 'pg', :group => :production
gem 'mysql2' , :group => :development
gem 'sqlite3', :group => :test
Run Code Online (Sandbox Code Playgroud)

我根据我编写的database.yaml代码制作了gemfile代码。您可以使用mysql2作为开发和测试环境。如果您这样做,您可以更改 gemfile 内容,如下所示:

gem 'pg', :group => :production
gem 'mysql2' , :group => [:development, :test]
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.. :)