【问题标题】:RAILS_ENV is not working as expected. How to set the environment?RAILS_ENV 未按预期工作。环境怎么设置?
【发布时间】:2019-12-31 01:57:23
【问题描述】:

我正在本地主机上的 rails5 中配置一个新应用程序,但在建立我的环境时遇到了一些问题。我将环境变量设置为“开发”,但每当我运行 rake db:drop 时,它都会显示以下内容

ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'production' database.
If you are sure you want to continue, run the same command with the environment variable:
DISABLE_DATABASE_ENVIRONMENT_CHECK=1

但是我的环境设置为开发而不是生产:

sam$ printenv | grep RAILS_ENV
RAILS_ENV=development

我忘记了什么?

非常感谢您查看此内容。

编辑:我的 yaml 看起来像这样

default: &default
  adapter: mysql2
  encoding: utf8
  username: ZZZZZZZ
  database: YYYYYYY
  host: 127.0.0.1
  socket: /tmp/mysql.sock
  password: XXXXXXXXX

development:
  <<: *default
  reconnect: true

【问题讨论】:

  • 你的 database.yml 上有生产配置块吗?尝试删除该配置,也许你会得到一个更好的错误
  • @arieljuod 好建议,我将所有其他环境都注释掉了。目前,我的 yaml 如上面我对问题所做的编辑所示。但是错误保持不变。

标签: ruby-on-rails environment-variables ruby-on-rails-5 development-environment


【解决方案1】:

如果您要删除的数据库是生产副本,ar_internal_metadata 将保存值productionrails db:drop 会抛出您看到的错误。运行 migrate 将值更改为 development

rails db:migrate
...
ActiveRecord::InternalMetadata Update (0.4ms)  UPDATE "ar_internal_metadata" SET "value" = $1, "updated_at" = $2 WHERE "ar_internal_metadata"."key" = $3  [["value", "development"]
...

现在您可以删除数据库而不会出错。导入然后删除可能没有意义,但我现在在本地 Rails 控制台中使用数据并想要删除和恢复数据后遇到此错误。

【讨论】:

    【解决方案2】:

    您可以使用设置环境 bin/rails db:environment:set RAILS_ENV=development

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-04
      • 2013-10-12
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-08-15
      • 2014-03-26
      • 1970-01-01
      相关资源
      最近更新 更多