IOError: закрытый поток в irb

File.open("/tmp/test") do |file|
  file.each_line("e") {|line|
    puts "Got #{ line.dump }"
  }
end

возвращает "IOError: закрытый поток" в irb. Но если он сохранен в файле 'test.rb', ruby test.rb - работает нормально. Версии Ruby: ruby-2.0.0-p247, ruby-2.1.0-preview1, Ubuntu, Mac OS. Что я делаю не так?

user:ads user$ echo "a\nb\nc" > /tmp/test
user:ads user$ irb
2.1.0-preview1 :001 > File.open("/tmp/test") { |file| file.each_line { |line| puts "Got #{ line.dump }" } }
Got "a\\nb\\nc\n"
IOError: closed stream
    from /Users/user/.rvm/gems/ruby-2.1.0-preview1/gems/awesome_print-1.2.0/lib/awesome_print/formatter.rb:199:in `directory?'
    from /Users/user/.rvm/gems/ruby-2.1.0-preview1/gems/awesome_print-1.2.0/lib/awesome_print/formatter.rb:199:in `awesome_file'
    from /Users/user/.rvm/gems/ruby-2.1.0-preview1/gems/awesome_print-1.2.0/lib/awesome_print/formatter.rb:26:in `format'
    from /Users/user/.rvm/gems/ruby-2.1.0-preview1/gems/awesome_print-1.2.0/lib/awesome_print/inspector.rb:137:in `unnested'
    from /Users/user/.rvm/gems/ruby-2.1.0-preview1/gems/awesome_print-1.2.0/lib/awesome_print/inspector.rb:104:in `awesome'
    from /Users/user/.rvm/gems/ruby-2.1.0-preview1/gems/awesome_print-1.2.0/lib/awesome_print/core_ext/kernel.rb:10:in `ai'
    from /Users/user/.rvm/gems/ruby-2.1.0-preview1/gems/awesome_print-1.2.0/lib/awesome_print/core_ext/kernel.rb:20:in `ap'
    from /Users/user/.irbrc:7:in `output_value'
    from /Users/user/.rvm/rubies/ruby-2.1.0-preview1/bin/irb:15:in `<main>'

person gayavat    schedule 09.11.2013    source источник
comment
См. здесь, чтобы понять, когда такая ошибка может come. Но я не вижу такого симптома в вашем коде.   -  person Arup Rakshit    schedule 09.11.2013
comment
Существует ли файл "/tmp/test"?   -  person Sergio Tulentsev    schedule 09.11.2013
comment
@SergioTulentsev Да..Иначе Errno::ENOENT: No such file or directory нужно выкинуть!   -  person Arup Rakshit    schedule 09.11.2013
comment
Это работает и для меня.   -  person Bala    schedule 09.11.2013
comment
Введите код в свой irb.. и покажите нам этот контент, с ошибкой вообще..... Давайте проверим!   -  person Arup Rakshit    schedule 09.11.2013
comment
Похоже, awesome_print ломает код. Я отключил и все работает нормально. Спасибо, парни!   -  person gayavat    schedule 11.11.2013


Ответы (1)


Возможное исправление в https://github.com/michaeldv/awesome_print/pull/141

- ls = File.directory?(f) ? `ls -adlF #{f.path.shellescape}` : `ls -alF #{f.path.shellescape}`
+ ls = `ls -adlF #{f.path.shellescape}`
person gayavat    schedule 11.11.2013