Как я могу перезагрузить скрипт в IRB?
Я пишу скрипт Ruby для использования в среде Rails, но я решил запустить его из irb, потому что перезагрузка консоли Rails может быть болью. Теперь время ожидания намного короче от irb, но меня беспокоит, что мне нужно перезапустить irb и требовать сценарий каждый раз, когда я делаю изменения. Есть ли более простой способ перезагрузки скрипта из irb?
Я нашел метод в этой теме, но это относится только к файлам gem, по-видимому. Мое заявление require выглядит так это
require "#{File.expand_path(__FILE__)}/../lib/query"
EDIT: попробовав load, а не require, Я все еще не мог заставить его работать. Я не могу остановить эти ошибки.
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
4 ответов:
в irb,
File.expand_path(__FILE__)}будет возвращать"#{path you ran irb from}/(irb)". Которая создает путь, который на самом деле не существует. К счастью, все пути к файлам относятся к тому, где вы запускали irb в любом случае. Это означает, что все, что вам нужно, это:load "lib/query.rb"если вы хотите использовать
__FILE__в реальном файле это нормально, но не ожидайте, что он создаст допустимый путь в irb. Поскольку irb вообще не существует" файла", поэтому он вообще не может возвращать допустимый путь.и
__FILE__будет работать нормально, если используется в файл, загруженный в irb через нагрузку или требуйте. Потому что именно для этого он и нужен.
вместо
requireпопробуйload. Первый загружает исходный файл только один раз, а второй загружает его каждый раз, когда вы его вызываете.
по данным этой ссылке вам нужно загрузить файл и не забыть расширение.
вот более причудливая версия для использования тоже в эта ссылка номер 2 что может быть полезно для вас тоже.
вы можете попробовать хешировать, почему ваша консоль rails не работает для вас.
Comments