2013-10-02 21 views
6

Jestem absolutnie początkującym użytkownikiem języka Ruby. Stworzyłem mały plik ruby ​​i działa dobrze, gdy uruchomię polecenie ruby "methods.rb". Oznacza to, że znajduję się we właściwym katalogu.Nie można znaleźć pliku ruby.

Ale kiedy uruchomić IRB i uruchom polecenie require "methods.rb", mam następującą odpowiedź:

LoadError: cannot load such file -- methods.rb 
    from /usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:53:in `require' 
    from /usr/local/rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:53:in `require' 
    from (irb):1 
    from /usr/local/rvm/rubies/ruby-1.9.3-p392/bin/irb:16:in `<main>' 

Odpowiedz

10

Ruby nie dodać bieżącą ścieżkę do ścieżki obciążenia domyślnie.

Zamiast irb możesz zamiast tego spróbować require "./methods.rb".

1

Mam plik ruby ​​o nazwie so.rb w katalogu /home/kirti/Ruby. Tak więc najpierw z IRB zmieniłbym mój bieżący katalog roboczy przy pomocy metody Dir#chdir. Następnie nazwałbym metodę #load lub #require. Mój plik so.rb zawiera tylko linię p hello.

pójdę w ten sposób:

>> Dir.pwd 
=> "/home/kirti" 
>> Dir.chdir("/home/kirti/Ruby") 
=> 0 
>> Dir.pwd 
=> "/home/kirti/Ruby" 
>> load 'so.rb' 
"hello" 
=> true 
>> require './so.rb' 
"hello" 
=> true 
1

Aby dodać katalog jesteś wykonywania skryptu ruby ​​od do użytku ścieżki obciążenia:

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '')) 

lub jeśli kładź zależności w ' subdir "bieżącego katalogu:

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'subdir')) 
1

Jeśli zamierzasz załadować rzeczy w IRB, które są w twoim cur możesz wypożyczyć katalog:

irb -I. 

Zauważ tam "kropkę", wskazującą aktualny katalog.

Jeśli odkrywania i dokonywania zmian w tym pliku, gdy jesteś w IRB, użyj load zamiast `require jako load pozwala załadować zmiany, a require pozwoli tylko plik być wymagane tylko raz. Oznacza to, że nie będziesz musiał opuszczać IRB, aby zobaczyć, jak wpływają na twoje zmiany.

Aby dowiedzieć się, jakie opcje masz dla IRB, możesz zrobić irb --help, co jest dobre, jeśli uczysz się tego narzędzia.