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


84

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


Це [1] [1] чого ви хочете досягти? [1]: stackoverflow.com/a/2652558/919641
pjam

1
джерело ("filename.rb")
Асад Ебрагім

Відповіді:


85

Якщо вам потрібно завантажити лише один файл в IRB, ви можете викликати його, irb -r ./your_file.rbякщо він знаходиться в тому ж каталозі.

Це автоматично вимагає файлу і дозволяє негайно працювати з ним.


2
Якщо ви хочете додати більше, ніж просто -r між кожним файлом, ну, це те, що я роблю, і це працює. Це те, як я завантажую всі свої файли в irb, щоб я міг отримати доступ до всіх речей мого додатка в irb, звичайно, я використовую скрипт rake для завантаження завантажувального файлу в irb, щоб я міг просто rake irbі це все робить за мене.
Thermatix

це була моя перша спроба після прочитання man, але я використовую -r some_file.rb, через 30 хвилин я знайшов це та додав ./, дякую xd
Алексіс

В Ubuntu 16.04 я irb -r /foo/foo.rb
видаляю

Це не дає доступу до змінних із файлу.
Радон Росборо,

47

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

irb -I . -r foo.rb

де foo.rbфайл, який я хочу завантажити з мого поточного каталогу. -IОпція необхідна , щоб додати поточну директорію ( .) на шляху завантаження рубіна, як пояснено на сторінці рубін людина. Це робить можливим 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'

Результат вашого рішення такий самий, як виклик 'ruby foo.rb', але ви принаймні бачите, що відбувається. Але я хочу залишити консоль відкритою, щоб я міг виконати ще кілька команд. Будь-яка ідея?
Пол Версхур,

32

Введіть irb

І потім

require './ruby_file.rb'

Це передбачає, що ruby_file.rb знаходиться в тому ж каталозі. Налаштуйте відповідно.


4
Ви також можете використовувати require_relative. Наприклад, require "./lib/foo"робить те саме, щоrequire_relative "lib/foo"
Денніс

.rbнеобов’язково, ви можете писати require './ruby_file'. I checked in ruby 1.9.3p551`
AMIC 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)).

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

На цьому зображенні я завантажив простий рубіновий файл, який друкує лише "рубін".


0

Інший спосіб завантажити шлях до irb - це просто type require, а потім перетягніть файл у термінал. - тестується за допомогою Linux Mint.


Linux Mint. На жаль, я повинен був це додати.
Майк Кеннеді

0

Для тих, хто хоче завантажити .rb файл з іншого каталогу. Просто додайте рядок-представник каталогу до змінної $:.

> $: << "/directory/to/the/required/rb/file"
> require "some_file"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.