2012-05-17 10 views
5

Ich bin neu in Rake und ich versuche, meinen Weg bei der Automatisierung einiger Aufgaben zu finden. Also schrieb ich meine erste Rake Aufgabe und fehlgeschlagen:Verwenden von Rake db: migrieren innerhalb einer anderen Aufgabe verlässt ausstehende Migrationen

namespace :app do 
    desc "Leaves application like new" 
    task :reset => :environment do 
    Rake::Task['db:drop:all'].invoke 
    Rake::Task['db:create:all'].invoke 
    Rake::Task['db:migrate'].invoke 
    Rake::Task['db:seed'].invoke 
    end 
end 

Ich mag gerne wissen, warum dies nicht funktioniert. Nach dem Aufruf:

rake app:reset 

alles läuft gut, ich kann die Migrationsmeldungen auf dem Bildschirm, wie diese:

== CreateGalerias: migrating ================================================= 
-- create_table(:galerias) 
NOTICE: CREATE TABLE will create implicit sequence "galerias_id_seq" for serial column "galerias.id" 
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index "galerias_pkey" for table "galerias" 
    -> 0.1191s 
== CreateGalerias: migrated (0.1194s) ======================================== 

Aber am Ende bekomme ich diese Meldung:

You have 11 pending migrations: 
    20110704052637 CreatePersonas 
    20110709100632 CreateOrganizaciones 
    20110709100646 CreateEventos 
    20110816102451 CreateMembresias 
    20110816155851 CreateCelebraciones 
    20110822135820 ActsAsTaggableOnMigration 
    20120410063100 CreateDocumentos 
    20120507200516 CreateUsuarios 
    20120515214226 ActivaUnnaccent 
    20120516091228 CreateGalerias 
    20120517004708 SetupHstore 
Run `rake db:migrate` to update your database then try again. 

Ist es nicht nur die Datenbank migriert? Warum beklagt es sich darüber?

+0

Arbeiten Sie an der Entwicklungsumgebung? Es sieht so aus, als ob die Rake-Aufgabe Migrationen in verschiedenen Umgebungen ausführt. Versuchen Sie, RAILS_ENV zu übergeben, wenn Sie Ihre Rake-Aufgabe ausführen. – decay

Antwort

2

Denken Sie daran, dass db: drop: all und db: create: alle in allen Umgebungen arbeiten und db: migrate und db: seed nicht, sodass Sie wahrscheinlich in einer nicht beabsichtigten Umgebung migrieren. Versuchen Sie, db zu ändern: drop: all zu db: drop und db: create: all zu db: create und führen Sie den Task aus, der eine bestimmte Umgebung angibt:

rake RAILS_ENV=production app:reset 
+0

Ja, die Antwort war die Änderung ** db: drop: all ** bis ** db: drop ** und ** db: create: all ** bis ** db: create **. Danach ** Rake App: Reset ** funktionierte ohne Probleme! – zenw0lf