2012-01-18 9 views
11
def load_lib 
    path = File.join(File.dirname(__FILE__), 'lib') 
    failures = [] 
    Dir.glob("#{path}/**/*.rb").each { |file| 
     puts "loading: #{file} ... " 
    } 
end 

Ahí está el guión. Cuando coloco cada línea individualmente, la función load_lib está disponible y funciona bien. Pero cuando lo pega en el IRB en un trozo grande (terminal de Ubuntu, Sh Ctrl C) se vuelve loca en la línea de Dir.glob(... y muestra esto:¿Por qué irrita a veces Irb cuando pego un script?

Display all 931 possibilities? (y or n) 
! 
!= 
!~ 
<=> 
.... [dozens of lines in this vein] 

y luego el método no se crea en absoluto.

Esto es lo que sucede (éxito) cuando me pego en una línea a la vez:

>> def load_lib 
>>  path = File.join(File.dirname(__FILE__), 'lib') 
>>  failures = [] 
>> Dir.glob("#{path}/**/*.rb").each { |file| 
?> puts file 
>> } 
>> end 
=> nil 
>> load_lib 
./lib/alpha_processor.rb 
./lib/development_mail_interceptor.rb 
./lib/service_processors/beta_processor.rb 

¿Hay algo acerca de la [] o {} que IRB no le gusta cuando se pegan en?

+0

Otra forma en que IRB puede equivocarse contigo http://stackoverflow.com/questions/39269032/why-rails-can-use-if-as-hash-key-but-not-in-ruby/ 39271791 # 39271791 – lulalala

Respuesta

25

Eso se debe a los caracteres TAB que tiene en su archivo fuente. Sangría con espacios. :-)

+2

Más exactamente, los caracteres de tabulación desencadenan el autocompletado de irb. Lo que obviamente no quieres cuando pegas en el código. La comunidad de Ruby ya se ha estandarizado bastante en 2 sangrías espaciales, así que usa eso. –

+0

@AlexWayne: gracias por aclarar. Debería haberlo hecho yo mismo. –

+0

La pestaña se utiliza para completar automáticamente en 'irb', por lo que a veces cortar y pegar activará esto. Creo que hay una opción para apagarlo, pero solo puedo encontrar referencias sobre cómo activarlo. – tadman

Cuestiones relacionadas