Ruby: как загрузить файл в интерактивную рубиновую консоль (IRB)?

84

Я использую IRB (интерактивную рубиновую консоль), чтобы научиться программировать на Ruby. Как мне загрузить файл в консоль, если я сначала пишу свои программы в текстовом редакторе?

Nbonbon
источник
[Это] [1] то, чего вы хотите достичь? [1]: stackoverflow.com/a/2652558/919641
pjam
1
источник ("filename.rb")
Асад Эбрагим

Ответы:

86

Если вам нужно загрузить только один файл в IRB, вы можете вызвать его, irb -r ./your_file.rbесли он находится в том же каталоге.

Это автоматически требует наличия файла и позволяет сразу же работать с ним.

PhilG
источник
2
Если вы хотите добавить больше, чем просто -r между каждым файлом, хорошо, что я делаю, и это работает. Это то, как я загружаю все свои файлы в irb, чтобы иметь доступ ко всем материалам своего приложения в irb, конечно, я использую сценарий rake для загрузки загрузочного файла в irb, чтобы я мог просто rake irbи он все делал за меня.
Thermatix
это была моя первая попытка после прочтения man, но я использую -r some_file.rb, через 30 минут я нашел это и добавил ./, спасибо xd
Alexis
В Ubuntu 16.04 я irb -r /foo/foo.rb
удаляю
Это не дает доступа к переменным из файла.
Radon Rosborough 08
49

Используя ruby ​​1.9.3 в Ubuntu 14.04, я могу загружать файлы из текущего каталога в irbследующую командную строку:

irb -I . -r foo.rb

где foo.rbнаходится файл, который я хочу загрузить из моего текущего каталога. Эта -Iопция необходима для добавления текущего каталога ( .) к пути загрузки ruby, как описано на странице руководства ruby. Это делает возможным requireфайлы из текущего каталога, что и выполняет -rопция irb.

Ключевой момент, который не был очевиден для меня, когда у меня была эта проблема, - это -Iвариант. Как только вы это сделаете, вы можете вызвать require 'foo.rb'изнутри irbлюбые файлы в текущем каталоге. И, конечно же, вы можете указать любой каталог, который хотите, а не только .с -Iопцией. Чтобы включить несколько каталогов в путь загрузки, разделите их двоеточием (:), например:

irb -I foo/:bar/:baz/

Эта команда добавит каталоги foo, barи bazна пути загрузки рубина.

Последняя альтернатива - использовать относительный или абсолютный путь к файлу при использовании requireили -rзагрузке файла:

irb -r ./foo.rb

или изнутри irb:

> require './foo.rb'
Wachr
источник
Результат вашего решения такой же, как при вызове «ruby foo.rb», но, по крайней мере, вы видите, что происходит. Но я хочу оставить консоль открытой, чтобы я мог выполнить еще несколько команд. Есть идеи?
Paul Verschoor
33

Печатать irb

А потом

require './ruby_file.rb'

Предполагается, что ruby_file.rb находится в том же каталоге. Отрегулируйте соответственно.

окисабени
источник
4
Вы также можете использовать require_relative. Например , require "./lib/foo"делает то же самоеrequire_relative "lib/foo"
Dennis
.rbнеобязательно, вы можете написать require './ruby_file'. I checked in ruby 1.9.3p551`
MING
что делает ./?
the12
1
@ the12 это относительный путь к текущему каталогу
winklerrr
28

Два пути:

  1. для загрузки исходного кода без запуска программы - это дает доступ ко всем переменным и функциям:

source("filename.rb")

  1. чтобы запустить программу, а затем перейти в интерактивный режим - это дает доступ только к функциям, а не к переменным:

require("filename.rb")

Асад Ибрагим
источник
1
Это, кажется, отвечает на вопрос, как перезагрузить скрипт. Я использовал requireэто, похоже, не для перезагрузки скрипта (любые изменения исходного источника не отражаются в вашем сеансе), но, sourceпохоже, отражает изменения в исходном скрипте.
Майкл Уэлч
4

Это зависит от вашего рубина. Ruby 1.8 включает ваш текущий путь, а Ruby 1.9 - нет. Оцените, $:включен ли ваш путь или нет. Таким образом, в Ruby 1.9 вы должны использовать весь путь, что всегда безопасно.

Затем вы можете использовать requireили loadдля включения файла.

requireне требует, чтобы вы добавляли суффикс файла при попытке его найти, и будет включать файл только один раз. requireследует использовать вместо него loadбольшую часть времени.

Ознакомьтесь с разделом Добавление каталога в $ LOAD_PATH (Ruby), если вы собираетесь использовать ruby ​​1.8.

Майкл
источник
2

Введите коды рубина в текстовом редакторе

Сохраните его с расширением .rb (например: demo.rb ).

В Linux откройте свой терминал, затем смените каталог на текущее расположение этого файла (для изменения каталога используется команда cd).

После этого введите irb и ваше имя файла (не забудьте указать расширение (.rb)).

нажмите здесь, чтобы увидеть загрузку файла ruby ​​с помощью irb

В этом изображении я загрузил простой файл ruby, который печатает только «ruby».

Винот
источник
0

Другой способ загрузить путь в irb - просто набрать требуемый файл и перетащить его в терминал. 🙂 - протестировано с использованием Linux Mint.

Майк Кеннеди
источник
Linux Mint. Извините, я должен был это добавить.
Майк Кеннеди
0

Для тех, кто хочет загрузить .rb файл из другого каталога. Просто добавьте строковый представитель каталога в переменную $:.

> $: << "/directory/to/the/required/rb/file"
> require "some_file"
тагайзм
источник