Стендап Сьогодні 📢 Канал в Telegram @stendap_sogodni

🤖🚫 Контент вільний від AI. Цей пост на 100% написаний людиною, як і все на моєму блозі. Насолоджуйтесь!

05.01.2023

Як налаштувати мовний сервер Solargraph для підказок по Ruby в VS Code

Сьогодні, на запит колеги Антона, інструкція по налаштуванню мовного сервера для Ruby кода для VSCode (та інших редакторів) - Solargraph. Solargraph надає редакторам “розумні” функції роботи над кодом, такі, як перехід до оголошення методу чи класу, доповнення коду та інше. Все це працює по моделі так званого мовного сервера, тому є сумісним з будь-яким редактором, що підтримує відповідний протокол.

Тож першим чином встановлюємо інтеграцію Solargraph з VSCode. Тільки сама інтеграція нічого не вміє. Далі потрібен гем solargraph. Його не треба мати в Бандлері, але — необхідно мати у поточній версії Ruby. Тобто після кожного оновлення доведеться не забути поставити. Тут є трюк — принаймні, для менеджера версій asdf можна записати гем у ~/.default-gems, та він встановиться автоматично. (І так, asdf - єдиний менеджер версій, що є на моїй системі.)

Цього буде достатньо, щоб бачити підказки по власному коду, але не по коду залежностей — тому рухаємося далі. Solargraph насправді читає не код, а його документацію, та спирається на ту, що згенерована командою yard. Тому після встановлення гемів необхідно запустити команду yard gems. Це теж можна автоматизувати, якщо записати відповідну опцію у конфігурацію командою yard config --gem-install-yri; після цього для кожного нового гему документація буде згенерована автоматично. Опція глобальна та міститься у файлі ~/.gemrc.

Все це добре, але для Rails не дасть хороших результатів тому, що Rails, по-перше, не має гарної документації у форматі Yard, а по-друге, вживає багато метапрограмування. Коли атрибути моделі генеруються під час запуску з бази даних, то простий аналіз коду їх не знайде. Потрібний підхід, що знає про конвенції Rails. Для цього існує гем solargraph-rails. Його треба спочатку встановити (так само як і сам Solargraph), а потім додати до проєкту конфігураційний файл. Що робити, якщо файл потрібний тільки тобі, та додавати його до командного репозиторію не дозволяють? Для цього є глобальний .gitignore. Додаємо туди .solargraph.yml, і ніхто не буде знати, що в нас є такий файл.

От і все — після цього твій редактор отримає повноцінне “розуміння” коду на Ruby. На останнє, після всіх налаштувань у VS Code варто запустити команду “Restart Solargraph”. А ще, якщо Solargraph потрібний тільки в окремому проєкті чи проєктах, можна вимкнути доповнення у VS Code глобально, а потім увімкнути для конкретних проєктів — я саме так і роблю.