RAILS_ENV在命令行中无法正常工作

时间:2019-05-16 16:24:09

标签: ruby-on-rails ruby ruby-on-rails-5

我正在使用Rails 5.2.3

这是我的命令行

RAILS_ENV=development bundle exec rake db:drop

我期望只有一个开发数据库被删除。但是我得到了这两个数据库被删除。我错过了什么?

Dropped database 'db/development.sqlite3'
Dropped database 'db/test.sqlite3'

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 :(得分:2)

这是一个已知的问题,当您在development环境中运行数据库任务时,它们也会在test环境中运行。

您可以在以下Rails github reop中查看此问题

https://github.com/rails/rails/issues/27299

作为解决方法,您可以使用以下方法:

https://github.com/ioquatix/activerecord-migrations

它解决了其中一些问题

答案 1 :(得分:1)

运行:bin/rails db:environment:set RAILS_ENV=development

然后运行bundle exec rake db:drop

它只应删除开发数据库....