2010-11-20 8 views
1

startete eine neue Rails 3 App. Ich habe ein paar Migrationen, die durch Scaffold generiert wurden, durchgeführt. Nichts ist auf der Konsole, wenn ich laufen „rake db: wandern“, auch wenn ich laufen „Rake --verbose db: wandern“nichts passiert, wenn ich Rake db laufen: migrieren

hier ist ein Beispiel für Migration

class CreateBicycles < ActiveRecord::Migration 
    def self.up 
    create_table :bicycles do |t| 
     t.string :title 
     t.text :Note 
     t.string :Manufacturer 
     t.string :Model 
     t.date :year_manufactured 
     t.integer :view_count 
     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :bicycles 
    end 
end 
+0

Können Sie Ihre Migrationen posten? – Alex

+0

Ich meine im Körper Ihrer Frage. :) – Alex

+0

Wohin führen Sie Ihre Rake-Aufgaben? Stellen Sie sicher, dass Sie im Stammverzeichnis Ihres Rails-Verzeichnisses laufen und dass Sie sogar eine Rake-Datei haben. – Alex

Antwort

0

ich getroffen habe, die Problem wie du. Hier ist meine Problembeschreibung.

try rake db: Version, es 0 zurück

try rake db: wandern, es ist nichts passiert und keine Tabelle erstellt, auch gibt es Migrationsdateien in db/migrieren. versuchen Rake db: migrieren VERSION = YourAnyMigrationFileTimestamp, eine Ausnahme ausgelöst, macht keine solche Migration verantwortlich.

Wenn Ihr Problem wie ich, vielleicht haben Sie oder installieren Sie eine falsche Rake-Task, die die Standard-Root ändern, wenn Migrations-Task ausgeführt wird.

um es zu überprüfen, müssen Sie die dritte Aufgabe zu debuggen, (http://stackoverflow.com/questions/2663912/rails-debugging-rails-tasks können Ihnen sagen, wie Rake-Task debuggen).

Debug-Zeile 548 in Activerecord-3.0.1/lib/active_record/migration.rb, laufen Dir.pwd, wenn das Ergebnis nicht Ihre App Wurzel ist, muss es eine andere Aufgabe Ihre Standardaufgabe dir ändern sein.

Das folgende ist, was ich

(RDB: 1) ausgetestet habe p self.class

Active :: Migrator

(RDB: 1) n

/home/raykin/.rvm/gems/[email protected]/gems/activerecord- 3.0.1/lib/active_record/migration.rb: 550

files = Dir [ "# {@ migrations_path}/[0-9] _ .rb "]

(RDB: 1) n

/home/raykin/.rvm/gems/[email protected]/gems/activerecord- 3.0.1/lib/active_record/migration.rb: 552

migrations = files.inject ([]) do | klasses, file |

(RDB: 1) p-Dateien

[]

(RDB: 1) p @migrations_path

"db/Migration /"

(RDB: 1) p Dir ['db/migrate/[0-9] _.rb ']

[]

(RDB: 1) l

* -Ausgang gespült *

(RDB: 1) Dir.pwd

* unbekannter Befehl : "Dir.pwd". Versuchen Sie "Hilfe".

(RDB: 1) p Dir.pwd

"/ home/Raykin/Campus /:/code/Campus/db/data_export"

zu sehen, hat das aktuelle Verzeichnis geändert worden ist, Ursache Schienen würde alle Aufgabe laden, bevor Migration ausgeführt wird (es scheint eine Methode, um die alle zu überlasten), und einige schlechte Aufgabe (nur ich schrieb es gestern ...) ändern Sie das aktuelle Verzeichnis.

Dies ist genau kein Problem von Rails, aber es ist wirklich ein verwirrtes Ergebnis für den Benutzer. kann Ihnen hoffentlich helfen.

Verwandte Themen