2011-08-29 11 views
7

Sto lavorando su Zed Shaw Imparare rubino l'Hard Way Esercizio 25Richiede comando non lavorando all'interno di bash IRB su Snow Leopard

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

Se navigando alla directory che contiene il file ruby ​​ex25.rb e avvio IRB, ricevo questi errori:

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 > 

Sembra che il comando require non funzioni qui. C'è qualcosa che mi manca?

Ho provato anche require' ./25' come suggerito e ottenere questi errori:

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

Bene, questo è un messaggio di errore diverso, quindi una domanda diversa. questo aiuta? http://stackoverflow.com/questions/1739836/invalid-multibyte-char-us-ascii-with-ruby-on-rails – Mischa

+0

FYI questi ultimi errori sono stati causati perché il file è stato codificato come UTF-16. Una volta cambiato in UTF-8, se ne andarono. –

risposta

14

Questo perché the working directory is no longer in the Ruby path in Ruby 1.9.2. Questo funziona:

require './ex25' 
+1

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

+0

ruby ​​1.9.2 non include la directory corrente nel loadpath. 1.8.7 fatto. – mraaroncruz

+0

Sì, nella 1.9 la directory corrente non si trova nel percorso di caricamento. Si potrebbe anche fare '$: << '.'' prima del primo' require' per aggiungerlo. –

2

Questo è in realtà un errore da parte mia mentre stavo scrivendo l'esercizio. @mischa è a posto con la sua soluzione, ma noterai che mentre prosegui nel libro gli esercizi successivi usano il comando require_relative invece di require.

I vari metodi per garantire che la directory di lavoro si trovi nel percorso di caricamento sono descritti here, ma suggerisco di sceglierne uno e di rimanere coerenti.