Ruby on Rails 6 现有Rest API项目如何添加PostgreSQL数据库支持
为已创建的Rails 6.1 API项目添加PostgreSQL支持
没有专门的内置一键命令,可以给已经生成完成的Rails项目直接追加PostgreSQL配置,手动调整3处配置即可完成适配,全程不需要重新创建项目:
- 调整依赖配置
打开项目根目录下的Gemfile,找到默认生成的sqlite依赖行gem 'sqlite3',删除后替换为gem 'pg',保存后在项目根目录执行命令安装依赖:
bundle install
- 替换数据库连接配置
打开config/database.yml文件,清空原有sqlite相关的配置内容,替换为PostgreSQL适配的配置:
default: &default adapter: postgresql encoding: unicode pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: <%= ENV.fetch("DB_USERNAME") { 'postgres' } %> password: <%= ENV.fetch("DB_PASSWORD") { 'postgres' } %> host: <%= ENV.fetch("DB_HOST") { 'localhost' } %> development: <<: *default database: myproject_development test: <<: *default database: myproject_test production: <<: *default database: myproject_production username: myproject password: <%= ENV["MYPROJECT_DATABASE_PASSWORD"] %>
注意:配置里的用户名、密码字段要和你本地安装PostgreSQL时设置的凭据一致,避免连接报错
- 验证配置生效
确保本地PostgreSQL服务处于启动状态,在项目根目录执行rails db:create,如果能正常创建开发、测试环境的数据库,就说明配置完成。之前已经写好的模型、迁移文件不需要额外修改,ActiveRecord会自动适配PostgreSQL语法,后续直接正常执行rails db:migrate等数据库操作命令即可。
如果想省手动改配置的事,也可以新建一个带
--database=postgresql参数的同名空项目,把新项目里的Gemfilepg依赖段、database.yml配置直接复制到老项目里,效果和手动修改完全一致。
内容的提问来源于stack exchange,提问作者htamayo
相关产品推荐
相关产品推荐

