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?
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:
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.
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.
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.
Odpowiedzi:
Jeśli potrzebujesz tylko załadować jeden plik do IRB, możesz go wywołać,
irb -r ./your_file.rb
jeśli znajduje się w tym samym katalogu.To automatycznie wymaga pliku i umożliwia natychmiastową pracę z nim.
źródło
rake irb
i robi to wszystko za mnie.irb -r /foo/foo.rb
Używając Ruby 1.9.3 na Ubuntu 14.04, mogę ładować pliki z bieżącego katalogu do
irb
następującego wiersza poleceń:gdzie
foo.rb
jest plik, który chcę załadować z mojego bieżącego katalogu. Ta-I
opcja 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 jestrequire
pobieranie plików z bieżącego katalogu, co realizuje-r
opcjairb
.Kluczowym elementem, który nie był dla mnie oczywisty, kiedy miałem ten problem, jest
-I
opcja. Gdy to zrobisz, możesz wywołaćrequire 'foo.rb'
z wewnątrzirb
dowolne pliki w bieżącym katalogu. Oczywiście możesz określić dowolny katalog, nie tylko.
za pomocą-I
opcji. Aby uwzględnić wiele katalogów na ścieżce ładowania, oddziel je dwukropkiem (:), np .:irb -I foo/:bar/:baz/
Ta komenda doda katalogi
foo
,bar
orazbaz
do ścieżki obciążenia Rubiego.Ostatnią alternatywą jest użycie względnej lub bezwzględnej ścieżki do pliku podczas używania
require
lub-r
wczytywania pliku:lub od wewnątrz
irb
:> require './foo.rb'
źródło
Wpisz
irb
I wtedy
require './ruby_file.rb'
Zakłada się, że plik ruby_file.rb znajduje się w tym samym katalogu. Odpowiednio wyreguluj.
źródło
require_relative
. Np.require "./lib/foo"
Robi to samo corequire_relative "lib/foo"
.rb
jest opcjonalne, możesz napisaćrequire './ruby_file'. I checked in
ruby 1.9.3p551`Dwie drogi:
source("filename.rb")
require("filename.rb")
źródło
require
który nie wydaje się, aby ponownie załadować skrypt (wszelkie modyfikacje oryginalnego źródła nie są odzwierciedlane w twojej sesji), podczas gdysource
wydaje się odzwierciedlać zmiany w oryginalnym skrypcie.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ć
require
lub,load
aby dołączyć plik.require
nie wymaga dodawania sufiksu pliku podczas próby jego znalezienia i uwzględni plik tylko raz.require
powinien być używany zamiast tego przezload
większość czasu.Sprawdź Dodawanie katalogu do $ LOAD_PATH (Ruby), jeśli zamierzasz używać Ruby 1.8
źródło
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)).
Na tym obrazku załadowałem prosty plik ruby, który wyświetla tylko "ruby".
źródło
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.
źródło
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"
źródło