Ruby: как загрузить файл в интерактивную рубиновую консоль (IRB)?
84
Я использую IRB (интерактивную рубиновую консоль), чтобы научиться программировать на Ruby. Как мне загрузить файл в консоль, если я сначала пишу свои программы в текстовом редакторе?
Если вы хотите добавить больше, чем просто -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загрузке файла:
Результат вашего решения такой же, как при вызове «ruby foo.rb», но, по крайней мере, вы видите, что происходит. Но я хочу оставить консоль открытой, чтобы я мог выполнить еще несколько команд. Есть идеи?
Paul Verschoor
33
Печатать irb
А потом
require'./ruby_file.rb'
Предполагается, что ruby_file.rb находится в том же каталоге. Отрегулируйте соответственно.
Это, кажется, отвечает на вопрос, как перезагрузить скрипт. Я использовал requireэто, похоже, не для перезагрузки скрипта (любые изменения исходного источника не отражаются в вашем сеансе), но, sourceпохоже, отражает изменения в исходном скрипте.
Майкл Уэлч
4
Это зависит от вашего рубина. Ruby 1.8 включает ваш текущий путь, а Ruby 1.9 - нет. Оцените, $:включен ли ваш путь или нет. Таким образом, в Ruby 1.9 вы должны использовать весь путь, что всегда безопасно.
Затем вы можете использовать requireили loadдля включения файла.
requireне требует, чтобы вы добавляли суффикс файла при попытке его найти, и будет включать файл только один раз. requireследует использовать вместо него loadбольшую часть времени.
Ответы:
Если вам нужно загрузить только один файл в IRB, вы можете вызвать его,
irb -r ./your_file.rb
если он находится в том же каталоге.Это автоматически требует наличия файла и позволяет сразу же работать с ним.
источник
rake irb
и он все делал за меня.irb -r /foo/foo.rb
Используя ruby 1.9.3 в Ubuntu 14.04, я могу загружать файлы из текущего каталога в
irb
следующую командную строку:где
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
:> require './foo.rb'
источник
Печатать
irb
А потом
require './ruby_file.rb'
Предполагается, что ruby_file.rb находится в том же каталоге. Отрегулируйте соответственно.
источник
require_relative
. Например ,require "./lib/foo"
делает то же самоеrequire_relative "lib/foo"
.rb
необязательно, вы можете написатьrequire './ruby_file'. I checked in
ruby 1.9.3p551`Два пути:
source("filename.rb")
require("filename.rb")
источник
require
это, похоже, не для перезагрузки скрипта (любые изменения исходного источника не отражаются в вашем сеансе), но,source
похоже, отражает изменения в исходном скрипте.Это зависит от вашего рубина. Ruby 1.8 включает ваш текущий путь, а Ruby 1.9 - нет. Оцените,
$:
включен ли ваш путь или нет. Таким образом, в Ruby 1.9 вы должны использовать весь путь, что всегда безопасно.Затем вы можете использовать
require
илиload
для включения файла.require
не требует, чтобы вы добавляли суффикс файла при попытке его найти, и будет включать файл только один раз.require
следует использовать вместо негоload
большую часть времени.Ознакомьтесь с разделом Добавление каталога в $ LOAD_PATH (Ruby), если вы собираетесь использовать ruby 1.8.
источник
Введите коды рубина в текстовом редакторе
Сохраните его с расширением .rb (например: demo.rb ).
В Linux откройте свой терминал, затем смените каталог на текущее расположение этого файла (для изменения каталога используется команда cd).
После этого введите irb и ваше имя файла (не забудьте указать расширение (.rb)).
В этом изображении я загрузил простой файл ruby, который печатает только «ruby».
источник
Другой способ загрузить путь в irb - просто набрать требуемый файл и перетащить его в терминал. 🙂 - протестировано с использованием Linux Mint.
источник
Для тех, кто хочет загрузить .rb файл из другого каталога. Просто добавьте строковый представитель каталога в переменную $:.
> $: << "/directory/to/the/required/rb/file" > require "some_file"
источник