2011-08-29 57 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,但我建议您选择一个并保持一致。