2011-08-29 18 views
7

tôi đang làm việc trên Zed Shaw Tìm hiểu Ruby Way cứng Tập thể dục 25Yêu cầu lệnh không làm việc trong bash IRB trên Snow Leopard

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

Khi tôi tìm đến thư mục chứa các tập tin ruby ​​ex25.rb và khởi chạy IRB, tôi nhận được các lỗi này:

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 > 

Dường như lệnh yêu cầu không hoạt động ở đây. Có điều gì tôi đang thiếu?

Tôi cũng đã cố gắng require' ./25' như đề nghị và nhận được các lỗi này:

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

Vâng, đó là một thông báo lỗi khác, do đó, một câu hỏi khác. Không giúp đỡ à? http://stackoverflow.com/questions/1739836/invalid-multibyte-char-us-ascii-with-ruby-on-rails – Mischa

+0

Các lỗi sau này được gây ra bởi vì tệp được mã hóa dưới dạng UTF-16. Một khi nó đã được thay đổi thành UTF-8, họ đã biến mất. –

Trả lời

14

Điều này là do the working directory is no longer in the Ruby path trong Ruby 1.9.2. Điều này không hoạt động:

require './ex25' 
+1

Vì lý do này: http://stackoverflow.com/questions/4965556/why-isnt-current-directory-on-my-ruby-path/4965766#4965766 –

+0

ruby ​​1.9.2 không bao gồm thư mục hiện tại trong Đường tải. 1.8.7 đã làm. – mraaroncruz

+0

Có, trong 1.9 thư mục hiện tại không có trong đường dẫn tải. Bạn cũng có thể làm '$: << '.'' trước khi' yêu cầu' đầu tiên để thêm nó. –

2

Điều này thực sự là một sai lầm khi tôi viết bài tập. @mischa là điểm trên với giải pháp của mình, nhưng bạn sẽ nhận thấy khi bạn tiến bộ thông qua cuốn sách mà các bài tập tiếp theo sử dụng lệnh require_relative thay vì require.

Các phương pháp khác nhau để đảm bảo rằng thư mục làm việc của bạn nằm trong đường dẫn tải được mô tả here, nhưng tôi đề nghị bạn chọn một và duy trì tính nhất quán.

Các vấn đề liên quan