Ruby on rails 当我运行“bundle exec-rake-test:prepare”时,它出错了,但“bundle exec-rake-db:test:prepare”运行正常,并发出警告。什么';发生什么事了?

Ruby on rails 当我运行“bundle exec-rake-test:prepare”时,它出错了,但“bundle exec-rake-db:test:prepare”运行正常,并发出警告。什么';发生什么事了?,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,根据一个例子,是一个快捷包装器(所以我猜它们是一样的) 当我运行bundle exec rake db:test:prepare时,出现以下错误: Don't know how to build task 'test:prepare' /Users/aj/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/ruby_executable_hooks:15:in `eval' /Users/aj/.rvm/gems/ruby-2.0.0-p4

根据一个例子,是一个快捷包装器(所以我猜它们是一样的)

当我运行bundle exec rake db:test:prepare时,出现以下错误:

Don't know how to build task 'test:prepare'
/Users/aj/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/ruby_executable_hooks:15:in `eval'
/Users/aj/.rvm/gems/ruby-2.0.0-p451@railstutorial_rails_4_0/bin/ruby_executable_hooks:15:in `<main>'

有人能解释这一点吗?

在Rails 4.1+中,他们不赞成使用db:test:prepare这个消息。您现在只需使用:

ActiveRecord::Migration.maintenant\u test\u schema

在spec_helper.rb中(如果不使用RSpec,也可以使用类似的文件)。这将自动使测试数据库与模式保持同步。由于这种“自动”方法,在大多数情况下不再需要db:test:prepare

如果出于某种原因需要手动执行,您仍然可以使用


rakedb:schema:load RAILS\u ENV=test

Spring肯定有一些问题,但自从beta版以来,我每天都在使用RAILS 4.1,在使用
maintest\u schema时从来没有遇到过问题和Spring。一个潜在的陷阱
ActiveRecord::Migration.Maintenance\u test\u schema无法正常工作,运行测试,然后使用
rake db:rollback
,然后更改迁移。然后,它认为模式是最新的,而不是最新的。运行Rails 4.1.0时,无法使其工作--ActiveRecord出现
UninitializedConstant
错误。不确定发生了什么。这是RSpec的一个好消息。@JamieD这是ActiveRecord repo中一个值得注意的错误吗?我认为这个错误应该建议使用前面提到的语法@Logan Serman。假设任何人的测试/规范助手都有“更新”的语法是自以为是的。
WARNING: db:test:prepare is deprecated. The Rails test helper now maintains your test schema automatically, see the release notes for details.