2011-08-29 14 views
7

estoy trabajando en Zed Shaw Aprender de Rubí la manera dura Ejercicio 25Requerir comando no trabaja dentro IRB bash en Snow Leopard

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

Cuando vaya al directorio que contiene el archivo de rubí y ex25.rb lanzar IRB, obtengo estos errores:

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 > 

Parece que el comando require no funciona aquí. ¿Hay algo que este olvidando?

También probé requieren' ./25' propuesto y obtener estos errores:

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

Bueno, ese es un mensaje de error diferente, por lo que una pregunta diferente. ¿Esto ayuda? http://stackoverflow.com/questions/1739836/invalid-multibyte-char-us-ascii-with-ruby-on-rails – Mischa

+0

FYI los últimos errores se produjeron porque el archivo estaba codificado como UTF-16. Una vez que se cambió a UTF-8, se fueron. –

Respuesta

14

Esto se debe a the working directory is no longer in the Ruby path en Ruby 1.9.2. Esto funciona:

require './ex25' 
+1

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

+0

ruby ​​1.9.2 no incluye el directorio actual en el loadpath. 1.8.7 hizo. – mraaroncruz

+0

Sí, en 1.9 el directorio actual no está en la ruta de carga. También podría hacer '$: << '.'' antes del primer' require' para agregarlo. –

2

Esto es en realidad un error de mi parte cuando escribía el ejercicio. @mischa es perfecta con su solución, pero notarás a medida que avanzas en el libro que los ejercicios posteriores usan el comando require_relative en lugar de require.

Los diversos métodos para garantizar que su directorio de trabajo se encuentre en la ruta de carga se describen en here, pero le sugiero que elija uno y se mantenga constante.

Cuestiones relacionadas