Как мне захватить вывод команды pry shell? - PullRequest
7 голосов
/ 10 февраля 2012

Я использую pry и хочу захватить и работать с выводом команды оболочки.

Например, если я запускаю

pry(main)> .ls

Я хочу получить список файлов в массив, с которым я могу работать в Ruby.

Как я могу это сделать?

Ответы [ 2 ]

5 голосов
/ 18 июля 2012

Это довольно старый вопрос, но я все равно отвечу на него.Есть два основных метода получения данных из команд pry.Во-первых, если команда устанавливает для параметра keep_retval значение true, чего нет в команде оболочки.Второе, это использовать виртуальный канал.В вашем примере это можно сделать так:

fizz = []
.ls | {|listing| fizz = listing.split("\n")} # can also be written as
.ls do |listing|
  fizz = listing.split("\n")
end
3 голосов
/ 14 февраля 2012

Я предполагаю, что это какая-то магия Прай; -)

После быстрого взгляда на происходящее (я не смотрел на источник Прай), вы можете использовать это:

`ls`.split("\n")

или

Dir['./*']

Что хорошо в этом решении, так это то, что оно будет работать за пределами pry

...