gpt4 book ai didi

ruby-on-rails - 如何将我现有的 Rails 应用程序移动到 heroku? (sqlite 到 postgres)

转载 作者:行者123 更新时间:2023-11-29 14:15:12 28 4
gpt4 key购买 nike

我有一个现有的 Ruby on Rails 应用,其中已经加载了数据。

我使用了默认的 SQLite 数据库设置,所以这是我所有数据所在的位置,但我需要将所有数据都放入我在 heroku 上的 Postgres 数据库中。

我该怎么做?

最佳答案

10 分钟从本地 SQLite 迁移到 Heroku Postgres

-- 一路更新你的本地开发到 postgres --

这是假设您在 sqlite 中有一个开发数据库,​​并且您希望将结构和数据移动到 heroku。您将首先将本地环境更改为 postgres,然后将其全部迁移。

为什么要改变?您应该始终让您的开发环境反射(reflect)您的生产环境。使用 Postgres 是 heroku 的默认设置。

您需要首先使用具有您用户名的用户在本地安装和配置 Postgres


需要的软件:postgresql、pgloader、heroku-cli


步骤

在您的开发环境中从 SQLite 迁移到 Postgres

  1. 安装 heroku/pgloader/postgres,并确保 postgresql 在您的系统上运行
  2. 备份 sqlite - 将 development.sql 复制到 development_old.sql
  3. gem 'pg' 添加到 Gemfile 的主要部分
  4. 捆绑安装
  5. 更新 config/database.yml(见下面的示例)
  6. rake 数据库:设置
  7. cd [应用程序根目录]
  8. 用数据加载 postgres 数据库 - pgloader ./db/development.sqlite3 postgresql:///[postgres 开发数据库的名称]
  9. 删除 gem 'sqlite3'
  10. 捆绑安装
  11. 启动服务器 - rails 服务器
  12. test by visiting app at localhost:3000

在 heroku 上设置新应用

Follow these instructions from heroku

将数据移动到 heroku

  1. 查找 heroku 数据库信息 - heroku pg:info
  2. 删除并重置远程数据库 - heroku pg:reset DATABASE_URL --app [应用名称]
  3. 将本地数据推送到 heroku - heroku pg:push [postgres dev db 的名称] DATABASE_URL --app [应用程序的名称]

注意:如果该数据库的行数超过 10k,您还需要在 heroku 上升级到 hobby-basic 层

将 Heroku 升级到 Hobby Tier Basic

  1. 创建新层 - `heroku addons:create heroku-postgresql:hobby-basic --app [应用名称]
  2. 获取新的数据库 url - heroku pg:info
  3. 开启维护 - heroku maintenance:on --app [应用名称]
  4. 复制数据 - heroku pg:copy DATABASE_URL [HEROKU_POSTGRESQL_COLOR_URL] --app [应用名称]
  5. 提升新数据库 - heroku pg:promote [HEROKU_POSTGRESQL_COLOR_URL] --app [应用名称]
  6. 关闭维护
  7. 通过访问 heroku 应用进行测试

如果您遇到问题或边缘情况,这里有一些资源可以提供帮助。

资源:

database_sample.yml

default: &default
adapter: postgresql
encoding: unicode
host: localhost
port: 5432
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000

development:
<<: *default
database: [name of app]_dev

test:
<<: *default
database: [name of app]_test

staging:
<<: *default
database: [name of app]

production:
<<: *default
database: [name of app]

关于ruby-on-rails - 如何将我现有的 Rails 应用程序移动到 heroku? (sqlite 到 postgres),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51068610/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com