Rails:如何为Heroku配置database.yml?

时间:2018-07-18 19:28:08

标签: ruby-on-rails database heroku

我是RoR上的新手。我使用ActiveAdmin和Devise构建了一个小应用程序,希望将其部署在Heroku上。

当我在Heroku上推送我的应用程序时,它可以正常运行,但数据库似乎为空!实际上,当我尝试登录ActiveAdmin管理面板时,我的本地登录不匹配...

此外,我的应用程序的其他数据库完全为空...

我想我没有正确填写database.yml,但是我不知道该怎么做...:/

Database.yml:

# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
#
default: &default
  adapter: sqlite3
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

# 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:
  <<: *default
  database: db/test.sqlite3

production:
  <<: *default
  database: db/production.sqlite3

如果您能帮助我或指导我解决问题,我将不胜感激!

谢谢您的关注! ^^

2 个答案:

答案 0 :(得分:0)

production:
  <<: *default
  database: db/production.sqlite3

您不能在heroku上使用sqlite3,因为它是基于文件系统的,并且每次重新启动时都会创建一个带有全新文件系统的dyno。旧的dyno被杀死,您的sqlite3数据文件也随之被杀死。

在heroku上使用客户端服务器数据库,例如Postgresql。 heroku指南对此进行了详细介绍。

答案 1 :(得分:0)

这些步骤是如何将本地数据库推送到heroku并创建数据库

heroku pg:backups:restore 'https://s3.amazonaws.com/me/items/3H0q/mydb.dump' DATABASE_URL
  1. 获取数据库信息

    heroku pg
    

->给我数据库的名字    例如:HEROKU_POSTGRESQL_CYAN

  1. 在heroku上重置数据库

    heroku pg:reset HEROKU_POSTGRESQL_CYAN
    
  2. 查找本地数据库的名称

    • 打开config / database.yml并找到数据库 开发环境的名称。 例如:fashions_development =>输入终端给你的名字
  3. 运行将本地数据库推送到Heroku 打开config / database.yml并找到数据库

    heroku pg:push fashions_development HEROKU_POSTGRESQL_CYAN