Комбинация точки останова и IRB (REPL) - PullRequest
2 голосов
/ 06 января 2012

Иногда я хочу поэкспериментировать с использованием IRB с некоторыми объектами, но, возможно, не так просто воспроизвести нужное мне состояние и контекст. Предположим, вы хотите поиграть с синтаксисом выражения внутри RSPec. Поэтому я хочу реализовать что-то вроде этого:

  1. внутри кода приложения ruby, которое я сейчас разрабатываю, я вызываю функцию eval_server
  2. создает сокет сервера и прослушивает соединения
  3. Я запускаю какой-то инструмент, похожий на IRB (назовем его eval_client - он должен быть реализован)
  4. создает клиентский сокет и подключается к eval_server
  5. Я набираю какое-то рубиновое выражение в eval_client
  6. eval_client отправляет его на eval_server
  7. eval_server оценивает выражение в контексте объекта, к которому оно было вызвано, сериализует результат или исключение (например, с использованием .inspect) и отправляет его обратно в eval_client
  8. eval_client отображает результат

...

вопрос : если подобный инструмент уже реализован? Если нет, есть ли какие-нибудь драгоценные камни, которые могут помочь мне реализовать это?

Я знаю, это может выглядеть как отладчик. Но я бы предпочел не запускать сервер rails с отладчиком. Я просто хочу добавить один, как в коде и IRB в контексте этой строки при следующем запросе.

обновление:

так по ответу:

eval_client = pry-remote

eval_server = binding.remote_pry

https://github.com/mon-ouie/pry-remote

1 Ответ

1 голос
/ 08 января 2012

A Pry Плагин под названием Pry-Remote может сделать это:

см .: https://github.com/pry/pry/wiki/Remote-sessions

...