【问题标题】:"Environment data not found in the schema." with database-cleaner when calling cucumber repeatedly on Rails 6“架构中未找到环境数据。”在 Rails 6 上重复调用黄瓜时使用数据库清洁器
【发布时间】:2020-03-14 08:02:37
【问题描述】:

注意:这不是Rails 5, Rspec: Environment data not found in the schema 的骗子,尽管它是相似的。受影响的版本不同,解决方法对我不起作用。

我的 Rails 设置如下:

  • Rails 6.0.1
  • 黄瓜导轨 2.0.0
  • database_cleaner 1.7.0

每当我第二次或以后运行cucumber 时,我都会收到此错误:

3924 ~/fork/my-proj$ bundle exec cucumber
rails aborted!
ActiveRecord::NoEnvironmentInSchemaError: 

Environment data not found in the schema. To resolve this issue, run: 

        rails db:environment:set RAILS_ENV=test

/Users/grantb/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.1/lib/active_record/migration.rb:1151:in `last_stored_environment'
/Users/grantb/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.1/lib/active_record/tasks/database_tasks.rb:60:in `check_protected_environments!'
/Users/grantb/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.1/lib/active_record/railties/databases.rake:15:in `block (2 levels) in <main>'
/Users/grantb/.rvm/gems/ruby-2.6.5/gems/activerecord-6.0.1/lib/active_record/railties/databases.rake:491:in `block (3 levels) in <main>'
/Users/grantb/.rvm/gems/ruby-2.6.5/gems/railties-6.0.1/lib/rails/commands/rake/rake_command.rb:23:in `block in perform'
/Users/grantb/.rvm/gems/ruby-2.6.5/gems/railties-6.0.1/lib/rails/commands/rake/rake_command.rb:20:in `perform'
/Users/grantb/.rvm/gems/ruby-2.6.5/gems/railties-6.0.1/lib/rails/command.rb:48:in `invoke'
/Users/grantb/.rvm/gems/ruby-2.6.5/gems/railties-6.0.1/lib/rails/commands.rb:18:in `<main>'
/Users/grantb/.rvm/gems/ruby-2.6.5/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
/Users/grantb/.rvm/gems/ruby-2.6.5/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/Users/grantb/.rvm/gems/ruby-2.6.5/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/Users/grantb/.rvm/gems/ruby-2.6.5/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
/Users/grantb/.rvm/gems/ruby-2.6.5/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/Users/grantb/.rvm/gems/ruby-2.6.5/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:325:in `block in require'
/Users/grantb/.rvm/gems/ruby-2.6.5/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:291:in `load_dependency'
/Users/grantb/.rvm/gems/ruby-2.6.5/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:325:in `require'
bin/rails:4:in `<main>'
Tasks: TOP => db:test:load => db:test:purge => db:check_protected_environments
(See full trace by running task with --trace)
Using the default profile...
[...cucumber continues as normal...]

我怎么能摆脱它?

如果我运行rails db:environment:set RAILS_ENV=test,它会在下一次运行cucumber 时摆脱它,但之后它总会重新运行。

我找到了另一个答案,建议将其添加到我的配置中,但它什么也没做

# This did NOT fix my problem:
DatabaseCleaner.clean_with(
  :truncation,
  except: %w(ar_internal_metadata)
)

显然database_cleaner正在删除环境数据,但我不知道如何让它停止。

谁能帮我摆脱这个烦人的警告?

【问题讨论】:

    标签: ruby-on-rails-6 database-cleaner


    【解决方案1】:

    原来这个问题是 database_cleaner 1.7 特有的。

    最近升级到 1.8.3 使此错误不再发生。

    (associated Github issue)

    【讨论】:

      猜你喜欢
      • 2011-10-31
      • 2016-11-07
      • 2011-04-02
      • 1970-01-01
      • 2022-01-16
      • 2016-12-02
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      相关资源
      最近更新 更多