web-dev-qa-db-fra.com

Comment puis-je recharger un script dans IRB?

J'écris un script Ruby à utiliser dans l'environnement Rails, mais j'ai choisi de l'exécuter à partir d'irb car le rechargement de la console Rails peut être pénible. Maintenant, le temps d'attente est beaucoup plus court avec irb, mais cela me dérange de devoir redémarrer irb et d'avoir besoin du script chaque fois que je fais un changement. Existe-t-il un moyen plus simple de recharger un script depuis irb?

J'ai trouvé une méthode dans ce fil , mais cela ne s'applique qu'aux fichiers gemmes apparemment. Ma déclaration requise ressemble à ceci

 require "#{File.expand_path(__FILE__)}/../lib/query"

EDIT: Après avoir essayé load plutôt que require, je n'arrivais toujours pas à le faire fonctionner. Je ne peux pas arrêter ces erreurs.

Ruby-1.9.2-p0 > load "#{File.expand_path(__FILE__)}/../lib/query.rb"
LoadError: no such file to load -- /Users/newuser/Dropbox/Sites/Rails/hacknyc/(irb)/../lib/query.rb
60
picardo

Dans irb, File.expand_path(__FILE__)} renverra simplement "#{path you ran irb from}/(irb)". Ce qui crée un chemin qui n'existe pas réellement. Heureusement, tous les chemins d'accès aux fichiers sont relatifs à l'endroit où vous avez exécuté irb de toute façon. Cela signifie que tout ce dont vous avez besoin est:

load "lib/query.rb"

Si vous souhaitez utiliser le __FILE__ dans un fichier réel, c'est bien, mais ne vous attendez pas à ce qu'il produise un chemin valide dans irb. Parce qu'un fichier IRB n'a pas de "fichier" du tout, il ne peut donc pas retourner du tout de chemin valide.

Aussi, __FILE__ fonctionnera correctement s'il est utilisé dans un fichier chargé dans irb via load ou require. Parce que c'est un peu pour ça.

97
Alex Wayne

Au lieu d'utiliser require, essayez load. Le premier ne charge un fichier source qu'une seule fois, tandis que le second le charge à chaque appel.

39
vonconrad

selon ce lien vous devez charger votre fichier et ne pas oublier l'extension.

Voici une version plus sophistiquée à utiliser également sur ce lien numéro 2 qui pourrait également vous être utile.

Vous voudrez peut-être essayer de comprendre pourquoi votre console Rails ne fonctionne pas pour vous.

3
pjammer

Je pense que load est ce que vous recherchez.

1
lukad