TL; DR - теперь вы можете просматривать источник идентификаторов C в Pry

Фон

Pry всегда стремился копаться в коде - независимо от того, отлаживаете ли вы или пытаетесь разобраться в кодовой базе. Одна из наиболее эффективных команд для достижения этой цели - show-source:

Первоначально реализация show-source поддерживала только просмотр исходного кода Ruby. Это было хорошее начало, но вызывало некоторое разочарование, когда пользователи пытались просмотреть источник для метода с поддержкой C, такого как Signal.trap.

Итак, примерно через год после выпуска Pry плагин pry-doc продолжил поддержку извлечения исходного кода для методов Ruby, написанных на C:

Это позволило гораздо глубже изучить код, но по-прежнему имел свои ограничения. Например, идентификаторы C trap_signm и RSTRING_PTR недоступны, поскольку они не отображаются на методы в Ruby.

CRuby Поддержка

Эти ограничения всегда раздражали меня, так как это вызывало необходимость покинуть Pry и обратиться к внешнему инструменту. И поэтому я рад сообщить, что последняя версия pry-doc поддерживает исходный код просмотр большого подмножества идентификаторов CRuby C:

Это позволяет нам выйти за рамки того, что открыто для Ruby, и углубиться в функции, структуры, перечисления и макросы, составляющие базу кода CRuby C. Кроме того, поскольку для просмотра исходного кода Ruby-land и CRuby используется одна и та же команда, мы можем легко перемещаться между ними (обратите внимание, что $ - это псевдоним для show-source ):

Как это использовать

Чтобы использовать эту новую функцию, просто установите последнюю версию pry-doc. Вам также потребуется установить curl и etags (эта программа входит в стандартную комплектацию большинства систем Linux и macOS).

При первой попытке просмотреть идентификатор CRuby вам будет предложено загрузить и установить соответствующий исходный код Ruby. Затем исходный код будет установлен в папку ~/.pry.d/ и обработан pry-doc. После этого все готово.

Ограничения

  • Можно искать только идентификаторы CRuby. Другие идентификаторы C, такие как strcmp, поступают из libc, и мы пока не можем получить их источник (хотя однажды это может стать возможным).
  • Это первый выпуск, поэтому в нем могут быть некоторые проблемы. В частности, некоторые данные, возвращаемые из etags, могут быть необычными, что может привести к странному поведению.
  • Не работает в Windows, но могу добавить поддержку, если будет спрос.
  • Нет завершения табуляции (пока) для идентификаторов CRuby.
  • Поддерживает только полнофункциональные версии Ruby ≥ 2.0.

Отправьте сообщение @ https://github.com/pry/pry-doc, если у вас возникнут проблемы!

Вы также можете посмотреть другие мои проекты @ https://github.com/banister

Наслаждаться!