2011-08-29 63 views
7

我上的Zed Shaw的工作學習Ruby的堅硬方式行使25要求命令不bash的IRB內工作雪豹

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

,當我瀏覽到包含ruby文件ex25.rb的目錄和推出IRB,我得到這些錯誤:

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 > 

看來,需要命令不能在這裏工作。有什麼我失蹤?

我也試圖要求」 ./25' 的建議,並得到這些錯誤:

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

那麼,這是一個不同的錯誤消息,所以一個不同的問題。這有幫助嗎? http://stackoverflow.com/questions/1739836/invalid-multibyte-char-us-ascii-with-ruby-on-rails – Mischa

+0

僅供參考後者錯誤是由於該文件編碼爲UTF-16而引起的。一旦它變成UTF-8,他們就離開了。 –

回答

14

這是因爲在Ruby 1.9.2 the working directory is no longer in the Ruby path。這確實有效:

require './ex25' 
+1

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

+0

紅寶石1.9.2不包括當前目錄中的loadpath。 1.8.7做到了。 – mraaroncruz

+0

是的,在1.9中當前目錄不在加載路徑中。你也可以在第一個'require'前添加'$:<<'。''來添加它。 –

2

這實際上是我編寫練習時的一個錯誤。 @mischa對他的解決方案很有幫助,但是當你在本書中學習時,你會注意到隨後的練習使用require_relative命令而不是require

確保您的工作目錄位於加載路徑中的各種方法描述如下here,但我建議您選擇一個並保持一致。