Отладка между JRuby и Java

У меня есть большой Java-проект, который использует некоторые сценарии Ruby (в основном из-за поддержки Ruby "yield"). Код Ruby вызывает код Java, который вызывает больше кода Ruby. Это очень чередуется, но все движется с Java.

Я использую встроенный jruby-standalone и создаю jar-with-зависимости (через maven). Я использую плагин maven для запуска jrubyc и генерации файлов.java, которые maven компилирует для меня.

Когда я запускаю jar-with-dependencies, я могу без проблем присоединить мой отладчик к процессу Java, но я бы очень хотел иметь возможность отлаживать код Ruby. Есть ли решение для этого?

Я не запускаю какой-либо исполняемый файл jruby, к которому я мог бы присоединить аргументы. Он встроен в jar и вызывается через java -jar.

1 ответ

Решение

Вы можете использовать gem pry-remote.

В отличие от pry, он не требует запуска процесса из терминала (или эмулятора терминала, если вы работаете в Windows).

Это не отладчик как таковой, но если вы добавите binding.remote_pry в вашем коде, где вы хотите наблюдать и реагировать в этом контексте (вы можете, например, перехватить исключение), это переведет pry в режим ожидания для удаленного соединения, и с другого терминала вы сможете подключиться к этому процессу и отлаживать Это.

2-х минутное практическое руководство доступно здесь.

Недостатки:

  • у вас не может быть 2 удаленных сессий.
  • ваш код должен содержать правильное условие отладки

Я использую это в средах перед развертыванием при разработке веб-приложений с jruby, h2 и jetty server.

Удачи!

Другие вопросы по тегам