2011-08-29 15 views
7

pracuję nad Zed Shaw Dowiedz Ruby Hard Way Ćwiczenia 25Wymagaj nie działa wewnątrz bash IRB na Snow Leopard

http://ruby.learncodethehardway.org/ex25.html

Kiedy przejdź do katalogu, który przechowuje ex25.rb plików rubin i uruchom program IRB, otrzymuję następujące błędy:

Larson-2:~ larson$ cd Ruby 
Larson-2:Ruby larson$ ls 
ex25.rb 
Larson-2:Ruby larson$ irb 
ruby-1.9.2-p290 :001 > require 'ex25' 
LoadError: no such file to load -- ex25 
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from (irb):1 
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>' 
ruby-1.9.2-p290 :002 > 

Wygląda na to, że polecenie require nie działa tutaj. Czy jest coś, czego mi brakuje?

Próbowałem też wymagać”./25' zgodnie z sugestią i uzyskać te błędy:

Larson-2:Ruby larson$ irb 
ruby-1.9.2-p290 :001 > require './ex25' 
SyntaxError: /Users/larson/Ruby/ex25.rb:1: invalid multibyte char (US-ASCII) 
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require' 
    from (irb):1 
    from /Users/larson/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>' 
+0

Cóż, to inny komunikat o błędzie, więc inne pytanie. czy to pomaga? http://stackoverflow.com/questions/1739836/invalid-multibyte-char-us-ascii-with-ruby-on-onil – Mischa

+0

FYI te ostatnie błędy zostały spowodowane, ponieważ plik został zakodowany jako UTF-16. Po przejściu na UTF-8 odeszli. –

Odpowiedz

14

To dlatego the working directory is no longer in the Ruby path w Ruby 1.9.2. To działa:

require './ex25' 
+1

Z tego powodu: http://stackoverflow.com/questions/4965556/why-isnt-current-directory-on-my-ruby-path/4965766#4965766 –

+0

Ruby 1.9.2 nie zawiera katalogu bieżącego w loadpath. 1.8.7 zrobił. – mraaroncruz

+0

Tak, w wersji 1.9 bieżący katalog nie znajduje się na ścieżce ładowania. Możesz również zrobić '$: << '.'' przed pierwszym' require' aby go dodać. –

2

To jest właściwie błąd z mojej strony, kiedy pisałem ćwiczenie. @mischa jest na miejscu z jego rozwiązaniem, ale zauważysz jak postępujesz w książce, że kolejne ćwiczenia używają polecenia require_relative zamiast require.

Różne metody zapewnienia, że ​​katalog roboczy znajduje się na ścieżce ładowania, są opisane here, ale sugeruję, aby wybrać jeden i zachować spójność.

Powiązane problemy