Консоль REPL в контексте приложения в Go - PullRequest
0 голосов
/ 25 апреля 2018

Есть ли способ доступа к интерактивной консоли REPL в контексте приложения, в Go?

Для справки, я думаю о функциональности irb * Руби или pry (и, как следствие, консоль Ruby On Rails , которая на них основана), Node.js REPL , Scala REPL игровая консоль ) или Elixir's IEx .Все это инструменты разработки (или производства!) Для открытия REPL в контексте приложения.Например, они позволяют получить доступ к классам, объектам и константам приложения, а также, по расширению, взаимодействовать с ресурсами приложения (например, с базой данных).

Есть некоторые Go REPLs, такие как gore , но не ясно, как подключить их к приложению.

Полагаю, можно было бы запустить сеанс gore и затем импортировать все пакеты, но как насчет инициализации, которая происходит в main?

Мой инстинкт подсказывает мне, что должен быть способ предоставить альтернативный «только для REPL» main для компиляции другого двоичного файла, который запускает приложение как REPL, а не, скажем,HTTP-сервер.

Есть ли какой-либо установленный способ сделать это?Или эталонная реализация?

1 Ответ

0 голосов
/ 25 апреля 2018

Вы можете попробовать go-pry: https://github.com/d4l3k/go-pry

Это работает очень близко к консоли рельсов.Просто import "github.com/d4l3k/go-pry/pry" в вашем файле и добавьте pry.Pry(), где вы хотите начать сеанс.После этого вы просто звоните go-pry main.go вместо go main.go.

Но, насколько я могу судить, стандартного решения не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...