2014-04-28 4 views
18

Also nach this link ist man ein Shortcut-Wrapper (also ich denke, sie sind gleich).Wenn ich `bundle exec rake test: prepare` ausgeführt habe, ist es fehlerhaft, aber` bundle exec rake db: test: prepare` geht gut mit Warnung durch. Was ist los?

Als ich bundle exec rake db:test:prepare lief, bekomme ich diesen Fehler:

Don't know how to build task 'test:prepare' 
/Users/aj/.rvm/gems/[email protected]_rails_4_0/bin/ruby_executable_hooks:15:in `eval' 
/Users/aj/.rvm/gems/[email protected]_rails_4_0/bin/ruby_executable_hooks:15:in `<main>' 

... aber wenn ich bundle exec rake db:test:prepare lief, bekomme ich diese Warnung:

WARNING: db:test:prepare is deprecated. The Rails test helper now maintains your test schema automatically, see the release notes for details. 

jemand Licht in diese kann?

+0

Ich denke, der Fehler anstatt die Syntax erwähnt @Logan Serman vorschlagen soll. Es ist anmaßend anzunehmen, dass jemandes Test-/Spezifikationshelfer die "aktualisierte" Syntax hätte. – Tass

Antwort

49

In Rails 4.1+ veraltet db: test: prepare mit dieser Nachricht. Sie können nun einfach verwenden:

ActiveRecord::Migration.maintain_test_schema!

in spec_helper.rb (oder ähnlichen Dateien, wenn Sie nicht RSpec verwenden). Dadurch wird Ihre Testdatenbank automatisch mit Ihrem Schema synchronisiert. Aufgrund dieser 'automatischen' Methode wird db: test: prepare in den meisten Fällen nicht mehr benötigt.

Wenn Sie es manuell aus irgendeinem Grunde tun müssen, können Sie immer noch verwenden

rake db:schema:load RAILS_ENV=test

+0

Ich glaube nicht, dass dies in Verbindung mit Spring gut funktioniert. – maletor

+0

Der Frühling hat definitiv einige Probleme, aber ich benutze Rails 4.1 jeden Tag seit der Beta und hatte nie ein Problem mit 'maintain_test_schema!' Und Spring. –

+6

Ein potentielles Problem 'ActiveRecord :: Migration.maintain_test_schema!' Funktioniert nicht korrekt, wenn eine Migration hinzugefügt wird, Tests ausgeführt werden, dann 'rake db: rollback' verwendet wird, dann wird die Migration geändert. Es denkt dann, dass das Schema auf dem neuesten Stand ist, wenn es nicht ist. – JamieD

Verwandte Themen