Les commandes “rails” génèrent des commandes lors de la création d’un modèle

Je suis nouveau sur les rails et j’ai décidé ce matin de jeter tout mon design / modèle de firebase database et de recommencer. Et étant un noob, je suis sûr que cela a été mal fait.

J’ai supprimé tous les fichiers dans db/migrate/ et abandonné les tables. Et quand j’ai essayé de générer la première nouvelle classe de modèle, les rails venaient d’être suspendus. Eteignez-vous dans les mauvaises herbes pendant 10 minutes avant de bash ^ C et d’essayer autre chose.

Cette fois-ci, j’ai relâché les tables, déplacé tout le projet sur project.bad et lancé de nouveaux rails pour recommencer. Encore une fois, après avoir généré le nouveau projet avec l’ancien nom, il s’est accroché à la commande de rails generate (j’utilisais le même nom de projet).

En désespoir de cause, j’ai essayé de créer un nouveau projet dans la même racine, mais avec un autre nom. Eureka! Cela a fonctionné comme un champion, en créant des contrôleurs et des classes de modèles, mais je suis totalement incapable de générer quoi que ce soit en utilisant le nom du projet d’origine, dans le projet d’origine ou dans un projet nouvellement créé. Qu’est-ce qui me manque pour que cela fonctionne à nouveau? Une perte complète à ce stade ne me dérange pas, mais j’aimerais pouvoir utiliser à nouveau le nom du projet original!

Voici à quoi ressemble log / development.log:

  (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` 

Une idée de ce qui doit se passer après ce dernier SELECT?

Si vos rails generate commandes, il est fort probable que les binstubs de rails générés ne le soient pas. Comme vous l’avez mentionné, vous avez renommé le projet.

Ma conjecture est que certains chemins dans les binstubs étaient toujours définis dans l’ancien répertoire du projet mais n’existaient plus.

Il y a un excellent article sur le fonctionnement des binstubs ici: https://github.com/sstephenson/rbenv/wiki/Understanding-binstubs

rails 4

Pour réinitialiser les binstubs, supprimez simplement votre répertoire bin/ dans les rails et exécutez:

 # generates binstubs for ALL gems in the bundle bundle install --binstubs # ...OR, generate binstubs for a SINGLE gem (recommended) bundle binstubs rake 

rails 5

Pour réinitialiser les binstubs, supprimez simplement votre répertoire bin/ dans les rails et exécutez:

 rake app:update:bin 

Vous l’avez trouvé à http://www.dixis.com/?p=754

Pour l’un de mes projets, j’utilise les rails 4.1 (à l’air pur! Ouais :)) et soudainement, après avoir ouvert mon portable le matin, mes commandes normales de rails, comme

 $> rails c $> rails g migration Bla name description some_more_fields 

juste… étaient suspendus et rien ne s’est passé ??? Comme ils attendaient d’autres commentaires. En étudiant de plus près, j’ai supposé que la connexion au processus de spring était perdue / corrompue (je me déplace beaucoup entre les réseaux? Cela pourrait peut-être l’expliquer).

Pour ceux qui ne le savaient pas, Spring est un préchargeur d’application Rails. Il accélère le développement en maintenant votre application en arrière-plan, ce qui vous évite de devoir l’initialiser à chaque fois que vous exécutez un test, une tâche de rake ou une migration. Bien sûr, lorsque cette connexion est perdue ou corrompue, elle se bloque.

Un simple

 $> spring stop 

arrête le serveur de ressorts, après quoi toute commande de rails redémarrera automatiquement. Corrigé 🙂

Dans Rails 5, les binstups sont créés à l’aide de la commande rails .

Je viens de supprimer le dossier bin moi-même, puis j’ai exécuté rails app:update:bin qui a corrigé mes problèmes.

Dans Rails 5, le répertoire bin / de votre application contient des exécutables qui sont versionnés comme n’importe quel autre code source, plutôt que des stubs générés à la demande.

Voici comment mettre à niveau:

 bundle config --delete bin # Turn off Bundler's stub generator rails app:update:bin # Use the new Rails 5 executables git add bin # Add bin/ to source control 

J’ai eu le même problème en essayant d’utiliser les rails g controller et ça se serait juste accroché. J’ai utilisé les mêmes étapes @mtrolle a suggéré:

bundle config --delete bin
rails app:update:bin
git add bin

Donc, quand j’ai couru: l’ rails g controller Project index il a créé le contrôleur, les aides et la vue d’index et GET 'project/index' route GET 'project/index' comme prévu.