Ruby: Jak załadować plik do interaktywnej konsoli Ruby (IRB)?


Odpowiedzi:


85

Jeśli potrzebujesz tylko załadować jeden plik do IRB, możesz go wywołać, irb -r ./your_file.rbjeśli znajduje się w tym samym katalogu.

To automatycznie wymaga pliku i umożliwia natychmiastową pracę z nim.


2
Jeśli chcesz dodać więcej niż tylko -r między każdym plikiem, cóż, to właśnie robię i działa. W ten sposób ładuję wszystkie moje pliki do irb, dzięki czemu mogę uzyskać dostęp do wszystkich rzeczy mojej aplikacji w irb, oczywiście używam skryptu rake, aby załadować plik rozruchowy do irb, więc mogę po prostu rake irbi robi to wszystko za mnie.
— Thermatix

to była moja pierwsza próba po przeczytaniu man, ale używam -r some_file.rb, 30 minut później znalazłem to i dodaję ./, dzięki xd
— Alexis

W Ubuntu 16.04 irb -r /foo/foo.rb
— usuwam

Nie daje to dostępu do zmiennych z pliku.
— Radon Rosborough

47

Używając Ruby 1.9.3 na Ubuntu 14.04, mogę ładować pliki z bieżącego katalogu do irbnastępującego wiersza poleceń:

irb -I . -r foo.rb

gdzie foo.rbjest plik, który chcę załadować z mojego bieżącego katalogu. Ta -Iopcja jest konieczna, aby dodać bieżący katalog ( .) do ścieżki ładowania ruby, jak wyjaśniono na stronie podręcznika dla ruby. Dzięki temu możliwe jest requirepobieranie plików z bieżącego katalogu, co realizuje -ropcja irb.

Kluczowym elementem, który nie był dla mnie oczywisty, kiedy miałem ten problem, jest -Iopcja. Gdy to zrobisz, możesz wywołać require 'foo.rb'z wewnątrz irbdowolne pliki w bieżącym katalogu. Oczywiście możesz określić dowolny katalog, nie tylko .za pomocą -Iopcji. Aby uwzględnić wiele katalogów na ścieżce ładowania, oddziel je dwukropkiem (:), np .:

irb -I foo/:bar/:baz/

Ta komenda doda katalogi foo, baroraz bazdo ścieżki obciążenia Rubiego.

Ostatnią alternatywą jest użycie względnej lub bezwzględnej ścieżki do pliku podczas używania requirelub -rwczytywania pliku:

irb -r ./foo.rb

lub od wewnątrz irb:

> require './foo.rb'

Rezultat twojego rozwiązania jest taki sam, jak wywołanie „ruby foo.rb”, ale przynajmniej widzisz, co się dzieje. Ale chcę zostawić konsolę otwartą, aby móc wykonać więcej poleceń. Dowolny pomysł?
— Paul Verschoor,

32

Wpisz irb

I wtedy

require './ruby_file.rb'

Zakłada się, że plik ruby_file.rb znajduje się w tym samym katalogu. Odpowiednio wyreguluj.


4
Możesz także użyć require_relative. Np. require "./lib/foo"Robi to samo corequire_relative "lib/foo"
— Dennis

.rbjest opcjonalne, możesz napisać require './ruby_file'. I checked in ruby 1.9.3p551`
— AMIC MING

co robi ./?
— 12

1
@ the12 to ścieżka względna do bieżącego katalogu
— winklerrr

28

Dwie drogi:

  1. do źródła ładowania bez uruchamiania programu - daje to dostęp do wszystkich zmiennych i funkcji:

source("filename.rb")

  1. uruchomić program, a następnie przejść do trybu interaktywnego - daje to dostęp tylko do funkcji, a nie do zmiennych:

require("filename.rb")


1
Wydaje się, że jest to odpowiedź na pytanie, jak również przeładować skrypt. Kiedyś używałem, requirektóry nie wydaje się, aby ponownie załadować skrypt (wszelkie modyfikacje oryginalnego źródła nie są odzwierciedlane w twojej sesji), podczas gdy sourcewydaje się odzwierciedlać zmiany w oryginalnym skrypcie.
— Michael Welch

4

To zależy od twojego rubinu. Ruby 1.8 zawiera twoją aktualną ścieżkę, podczas gdy Ruby 1.9 nie. Oceń, $:aby określić, czy Twoja ścieżka jest uwzględniona, czy nie. Więc w ruby ​​1.9 musisz użyć całej ścieżki, co jest zawsze bezpiecznym zakładem.

Następnie możesz użyć requirelub, loadaby dołączyć plik.

requirenie wymaga dodawania sufiksu pliku podczas próby jego znalezienia i uwzględni plik tylko raz. requirepowinien być używany zamiast tego przez loadwiększość czasu.

Sprawdź Dodawanie katalogu do $ LOAD_PATH (Ruby), jeśli zamierzasz używać Ruby 1.8


2

Wpisz kody ruby ​​w edytorze tekstu

Zapisz go z rozszerzeniem .rb (na przykład: demo.rb ).

W Linuksie otwórz terminal, a następnie zmień katalog na bieżącą lokalizację tego pliku (polecenie cd służy do zmiany katalogu).

Następnie wpisz irb i nazwę pliku (nie zapomnij dołączyć rozszerzenia (.rb)).

kliknij tutaj, aby zobaczyć ładowanie pliku ruby ​​za pomocą irb

Na tym obrazku załadowałem prosty plik ruby, który wyświetla tylko "ruby".


0

Innym sposobem załadowania ścieżki do irb jest po prostu wpisanie wymagaj, a następnie przeciągnięcie i upuszczenie pliku do terminala. -Testowane przy użyciu Linux Mint.


Linux Mint. Przepraszam, że powinienem to dodać.
— Mike Kennedy

0

Dla tych, którzy chcą załadować plik .rb z innego katalogu. Po prostu dodaj łańcuchowy reprezentator katalogu do $: variable.

> $: << "/directory/to/the/required/rb/file"
> require "some_file"
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.