如何为 db:environment:set 定义环境?

How do I define environments for db:environment:set?

我正在尝试将我的数据库环境设置为 staging,但出现此错误:

$ bin/rails db:environment:set RAILS_ENV=staging
rails aborted!
ActiveRecord::AdapterNotSpecified: database configuration does not specify adapter
/Users/bfruitman/workspace/hired/config/environment.rb:5:in `<top (required)>'
/Users/bfruitman/workspace/hired/bin/rails:9:in `<top (required)>'
/Users/bfruitman/workspace/hired/bin/spring:14:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:environment:set => environment
(See full trace by running task with --trace)

我已经在 database.yml 中有一个条目:

staging:
  <<: *heroku

但这显然不够好。我应该在哪里定义 staging?

您可能需要添加文件:config/environments/staging.rb,默认情况下不包含它,我通常先复制我的 production.rb,然后进行任何暂存特定更改(如果需要)。

cp config/environments/production.rb config/environments/staging.rb

更改数据库环境的最佳方法是使用 psql:

update ar_internal_metadata set value = 'staging' where key = 'environment';

staging 替换为您要使用的任何环境。