Ich bin neu in Rails und habe heute Morgen beschlossen, mein gesamtes Datenbankdesign / -modell zu sichern und von vorne zu beginnen. Und da ich ein Noob bin, habe ich es sicher falsch gemacht.
Ich habe alle Dateien entfernt db/migrate/
und die Tabellen gelöscht. Und als ich versuchte, die erste neue Modellklasse zu generieren, hingen die Schienen einfach. 10 Minuten im Unkraut, bevor ich ^ C drückte und etwas anderes versuchte.
Dieses Mal habe ich die Tabellen erneut gelöscht, das gesamte Projekt in project.bad verschoben und neue Schienen erstellt, um von vorne zu beginnen. Nachdem das neue Projekt mit dem alten Namen erstellt worden war, hing es wieder an derrails generate
Befehl (ich habe denselben Projektnamen verwendet).
In meiner Verzweiflung habe ich versucht, ein neues Projekt im selben Stamm zu erstellen, aber mit einem anderen Namen. Eureka! Dies funktionierte wie ein Champion, der Controller und Modellklassen erstellte, aber ich kann mit dem ursprünglichen Projektnamen, im ursprünglichen Projekt oder in einem neu erstellten Projekt überhaupt nichts generieren. Was fehlt mir, um das wieder zum Laufen zu bringen? An dieser Stelle macht mir ein vollständiger Verlust nichts aus, aber ich möchte den ursprünglichen Projektnamen wieder verwenden können!
So sieht log / development.log aus:
(255.5ms) CREATE TABLE `schema_migrations` (`version` varchar(255) NOT NULL) ENGINE=InnoDB
(337.7ms) CREATE UNIQUE INDEX `unique_schema_migrations` ON `schema_migrations` (`version`)
ActiveRecord::SchemaMigration Load (0.2ms) SELECT `schema_migrations`.* FROM `schema_migrations`
(0.2ms) SELECT `schema_migrations`.`version` FROM `schema_migrations`
Irgendeine Idee, was nach dieser letzten AUSWAHL passieren soll?
Antworten:
Wenn dein
rails generate
Befehle hängen bleiben, ist es höchstwahrscheinlich, dass die generierten Binstubs von Schienen das Problem sind. Wie Sie bereits erwähnt haben, haben Sie das Projekt umbenannt.Meine Vermutung ist, dass einige Pfade in den Binstubs noch auf das alte Projektverzeichnis gesetzt waren, aber nicht mehr existierten.
Es gibt hier einen großartigen Artikel darüber, wie binstubs funktionieren: https://github.com/sstephenson/rbenv/wiki/Understanding-binstubs
Schienen 4
Um die binstubs zurückzusetzen, löschen Sie einfach Ihr
bin/
Verzeichnis in Rails und führen Sie Folgendes aus:# generates binstubs for ALL gems in the bundle bundle install --binstubs # ...OR, generate binstubs for a SINGLE gem (recommended) bundle binstubs rake
Schienen 5 / Schienen 6
Um die binstubs zurückzusetzen, löschen Sie einfach Ihr
bin/
Verzeichnis in Rails und führen Sie Folgendes aus:rake app:update:bin
Warum müssen wir den Befehl 'rake' für Schienen 5 und höher verwenden und nicht den Befehl 'rails' selbst?
Seit Rails 5 sind einige 'Rake'-Befehle im' Rails'-Befehl enthalten. Wenn man jedoch das Verzeichnis 'bin /' löscht, entfernt man auch den Befehl 'Rails' selbst, so dass man zum Zurücksetzen zu 'Rake' zurückkehren muss, da 'Rails' nicht mehr verfügbar ist, 'Rake' jedoch immer noch.
quelle
rails
Befehl gekapselt . Wenn Sie jedoch löschenbin/
, entfernen Sie auch denrails
Befehl, sodass Sie zum Harken zurückkehren müssen. Ich werde ein Update machen. Danke für die Warnung!rake app:update:bin
in Rails 5 lief das Gerüst.Fand dies unter http://www.dixis.com/?p=754
$> rails c $> rails g migration Bla name description some_more_fields
$> spring stop
quelle
In Rails 5 werden die binstups mit dem
rails
Befehl erstellt.Ich habe gerade den bin-Ordner selbst gelöscht und bin dann ausgeführt worden,
rails app:update:bin
wodurch meine Probleme behoben wurden.quelle
Ich musste nur töten
spring
.Vor
Mein Fix:
Finde die PID und töte
spring
.$ rails generate yaddi-yaddi-yadda # success.
quelle
TL; DR: Der Neustart des Computers hat bei mir funktioniert.
Ich hatte das gleiche Problem, und obwohl die gewählte Antwort funktionierte, war es mir unangenehm, ein paar Dinge zu löschen, die ich zugegebenermaßen nicht vollständig verstehe. Mein Git-Status im
bin
Verzeichnis sah so aus, nachdem ich das bin-Verzeichnis gelöscht und ausgeführt hatterails app:update:bin
deleted: bin/bundle modified: bin/rails modified: bin/rake modified: bin/setup deleted: bin/spring deleted: bin/webpack deleted: bin/webpack-dev-server deleted: bin/yarn
Ich hatte das Gefühl, dass etwas zurückkommen könnte, um mich später zu beißen. Nachdem ich den Artikel gelesen hatte, auf den in der akzeptierten Antwort ( http://www.dixis.com/?p=754 ) verwiesen wird, beschloss ich, meinen Computer einfach neu zu starten, da dies das Problem beheben würde Netzwerkprobleme. Es funktionierte wie ein Zauber.
quelle
Ich hatte das gleiche Problem beim Versuch zu verwenden
rails g controller
und es würde einfach hängen. Ich habe die gleichen Schritte ausgeführt, die @mtrolle vorgeschlagen hat:bundle config --delete bin
rails app:update:bin
git add bin
Als ich lief
rails g controller Project index
, wurden der Controller, die Helfer sowie die Indexansicht und dieGET 'project/index'
Route wie erwartet erstellt.quelle