Почему irb freak иногда, когда я вставляю в script?

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

Там script. Когда я помещаю каждую строку в отдельности, функция load_lib доступна и работает нормально. Но когда я вставляю его в irb в один большой кусок (терминал Ubuntu, Sh Ctrl C), он увлекается строкой Dir.glob(... и показывает это:

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

а затем метод вообще не создается.

Вот что происходит (успех), когда я вставляю его в одну строку за раз:

>>  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

Есть ли что-то в [] или {}, которое irb не нравится, когда они вставлены?

Ответ 1

Это из-за символов TAB, которые у вас есть в исходном файле. Отступ с пробелами.: -)