Отладка между 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.
Удачи!