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

84

Używam IRB (interaktywnej konsoli Ruby), aby nauczyć się programować w Rubim. Jak załadować plik do konsoli, jeśli najpierw napiszę programy w edytorze tekstu?

nbonbon
źródło
Czy [to] [1] chcesz osiągnąć? [1]: stackoverflow.com/a/2652558/919641
pjam
1
źródło („filename.rb”)
Assad Ebrahim

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.

PhilG
źródło
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'
wachr
źródło
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.

okysabeni
źródło
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")

Assad Ebrahim
źródło
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

Michał
źródło
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".

Vinoth
źródło
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.

Mike Kennedy
źródło
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"
tagaizm
źródło