Я создал консоль Ruby script, которая использует ARGF для загрузки данных из файла или stdin, который затем вызывает Pry.
Это отлично работает, когда я передаю файл в (Pry pauses), но не удается (Pry не останавливается и просто выходит из Ruby), когда я передаю свои данные с помощью stdin.
Это странно, кто-нибудь знает почему? Я хотел бы передать данные через stdin и приостановить Pry.
Вот пример script:
require 'rubygems'
require 'pry'
def pry_it(str)
binding.pry
end
pry_it(ARGF.read)
Когда я вызываю это приложение с файлом в ARGV, я получаю свой правильный ответ - pry pauseing
% 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. Weird! Я не понимаю, почему я получаю такое поведение....