Подтвердить что ты не робот

Как я могу перезагрузить 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
4b9b3361

Ответ 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 - это то, что вы ищете.