Я создал консольный сценарий Ruby, который использует ARGF для загрузки данных из файла или стандартного ввода, а затем вызывает Pry.
Это прекрасно работает, когда я передаю файл (Pry делает паузу), но терпит неудачу (Pry не останавливается и просто выходит из Ruby), когда я передаю свои данные с помощью стандартного ввода.
Это странно, кто-нибудь знает почему? Я хотел бы передать данные через стандартный ввод и приостановить Pry.
Вот пример скрипта:
require 'rubygems'
require 'pry'
def pry_it(str)
binding.pry
end
pry_it(ARGF.read)
Когда я вызываю это приложение с файлом в ARGV, я получаю свой правильный ответ - пауза
% bundle exec ruby pry_test.rb file.txt
From: /Users/wilcoxr/Development/json_pry/pry_test.rb @ line 8 Object#pry_it:
6: def pry_it(str)
7:
=> 8: binding.pry
9: end
[1] pry(main)>
Здорово! Я могу выполнять команды Pry сколько захочу
Когда я пытаюсь использовать STDIN для отправки данных в мой инструмент:
% cat file.txt | bundle exec ruby pry_test.rb
From: /Users/wilcoxr/Development/json_pry/pry_test.rb @ line 8 Object#pry_it:
6: def pry_it(str)
7:
=> 8: binding.pry
9: end
[1] pry(main)>
%
Посмотрите внимательно: обратите внимание, что я вернулся к командной строке, а не к паузам в IRB. Странный! Я не понимаю, почему у меня такое поведение....