Есть ли в Phoenix эквивалент Rails Console?

94

Я только изучаю Phoenix и Elixir, и я исхожу из Ruby / Rails, где я работаю в REPL, используя pryдля проверки моей базы данных и состояния приложения.

Я пытаюсь понять, как взаимодействовать с моей базой данных и моделями в приложении Phoenix. Я знаю iex, но не знаю, как его использовать, проверьте базу данных моего приложения из ответа. Надо ли каждый раз подключаться к нему с ecto из репла? Есть rails consoleаналог. Я проверил документы Phoenix, Elixir Dose и репозиторий Ecto, но не могу найти то, что ищу. Я что-то упускаю?

Изменить: Основываясь на ответе ниже, я нашел этот раздел документов экто. На основе этого я могу сделать что-то вродеArticlesApi.Repo.all ArticlesApi.Article

Чейз Гиллиам
источник
2
Вы можете сэкономить набрав альясинг имен модулей: alias ArticlesApi.{Repo, Article}. Также имейте в виду, что вы можете очень удобно перекомпилировать отдельные модули из консоли ( r Article) или перекомпилировать весь проект, используя recompile. Это позволяет вам постоянно оставлять iexсеанс открытым, сохраняя псевдонимы активными.
hmans

Ответы:

122

Вы можете запустить iex -S mixдля запуска iexс включенными зависимостями в вашем текущем проекте микширования. Вы можете прочитать об этом на http://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html

Оттуда вы можете выполнять запросы Ecto:

iex> MyApp.Repo.all(MyApp.User)

Запуск iex -S mix phoenix.serverтакже запустит сервер Phoenix.

Газлер
источник
8
Также стоит отметить удобство iex.exsфайла в корне вашего проекта, чтобы вы могли настраивать псевдонимы (так что вам не нужно все предшествовать MyApp.). Примером может быть: alias MyApp.Repo alias MyApp.User alias MyApp.Car
Дэвид Кухта
2
Есть ли способ использовать это в производственной среде?
Chris.Zou
@ Chris.Zou Да, использовать bin/my_app remote_consoleв удаленной оболочке.
Ник Нилов
3
На самом деле это iex -S mix phx.serverначиная с Phoenix 1.3.
okay56k 03
27

Для отладки во время выполнения (например, byebugили debuggerили pryв рельсах) используйте

require IEx в верхней части файла модели, контроллера или представлений, затем введите

IEx.pry туда, где вам нужно, чтобы он остановился во время выполнения и продолжил отладку.

Введите hсправку в консоли

Самое главное, после всего этого перезагрузите сервер с помощью:

iex -S mix phoenix.server

Подробнее: здесь

Devaroop
источник
4

Если вы работаете в разработке, используйте iex -S mix phx.server.

Если вам нужно войти в консоль развернутого выпуска, перейдите в каталог выпуска и запустите, bin/<name of your app> remote_consoleчтобы открыть удаленную оболочку для консоли вашего приложения.

Марк Уилбур
источник