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