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
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.
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.
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.
Je pense que load
est ce que vous recherchez.