62 votes

Comment puis-je recharger un script dans IRB?

Je suis en train d'écrire un script Ruby pour une utilisation dans l'environnement Rails, mais j'ai choisi de l'exécuter à partir de la cisr parce que le rechargement de la console Rails peuvent être une douleur. Maintenant, le temps d'attente est beaucoup plus court à partir de la cisr, mais je suis gêné que je dois redémarrer la cisr et exiger le script à chaque fois que je fais un changement. Est-il un moyen plus simple de le rechargement d'un script à partir de la cisr?

J'ai trouvé une méthode dans ce fil, mais qui ne s'applique qu'à gem fichiers apparemment. Mon exiger la déclaration ressemble à ceci

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

EDIT: après Avoir essayé, load plutôt que d' require, je ne pouvais toujours pas le faire fonctionner. Je ne peux pas arrêter sur 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

99voto

Alex Wayne Points 58113

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

load "lib/query.rb"

Si vous souhaitez utiliser l' __FILE__ dans un fichier, c'est bien, mais ne vous attendez pas à produire un chemin d'accès valide dans la cisr. Parce que irb il n'existe pas de fichier" à tout, de sorte qu'il ne peut pas retourner le chemin d'accès valide à tous.

Aussi, __FILE__ fonctionnera bien si utilisé dans un fichier chargé dans la cisr par la charge ou l'exigent. Parce que c'est un peu ce que c'est.

39voto

vonconrad Points 14378

Au lieu d'utiliser require , essayez load . Le premier charge un fichier source une seule fois, tandis que le dernier le charge à chaque fois que vous l'appelez.

3voto

pjammer Points 5042

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 vous être utile également.

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

1voto

lukad Points 2720

Je pense que load est ce que vous recherchez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X