Чи існує Фенікс, еквівалентний Rails Console


93

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

Я намагаюся зрозуміти, як взаємодіяти зі своєю базою даних та моделями в додатку Фенікс. Мені відомо iex, але я не знаю, як це використовувати, перевіряти базу даних мого додатка з repl. Чи потрібно підключатись до нього за допомогою ecto кожного разу з repl? Чи існує rails consoleеквівалент. Я перевірив документи Phoenix, Elixir Dose та Ecto repo, але не можу знайти те, що шукаю. Мені чогось не вистачає?

Редагувати: На основі відповіді нижче я знайшов цей розділ ecto docs. На основі цього я можу зробити щось подібнеArticlesApi.Repo.all ArticlesApi.Article


2
Ви можете заощадити набравши альясінг імен модулів: alias ArticlesApi.{Repo, Article}. Також майте на увазі, що ви можете дуже зручно перекомпілювати окремі модулі зі своєї консолі ( r Article) або перекомпілювати весь проект за допомогою recompile. Це дозволяє вам залишати iexсеанс постійно відкритим, зберігаючи псевдоніми активними.
hmans

Відповіді:


121

Ви можете запустити, 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також запустить сервер Фенікс.


8
Також варто відзначити зручність iex.exsфайлу в кореневій частині вашого проекту, щоб дозволити вам встановити псевдоніми (так що вам не доведеться передувати усьому MyApp.). Прикладом може бути: alias MyApp.Repo alias MyApp.User alias MyApp.Car
Девід Кухта

2
Чи є спосіб використати це у виробничому середовищі?
Кріс Зоу,

@ Chris.Zou Так, використовуйте bin/my_app remote_consoleу своїй віддаленій оболонці.
Нік Нілов

3
Це насправді iex -S mix phx.serverз часів Phoenix 1.3.
okay56k

27

Для виконання налагодження, (як byebugабо debuggerчи pryв рейках), використання

require IEx у верхній частині вашої моделі, контролера або файлу переглядів, а потім введіть

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

Введіть hдовідку всередині консолі

Найголовніше, після всього цього, перезапустіть сервер за допомогою:

iex -S mix phoenix.server

Більше інформації: тут


4

Якщо ви працюєте в розробці, використовуйте iex -S mix phx.server.

Якщо вам потрібна консоль розгорнутого випуску, перейдіть до каталогу випуску та запустіть, bin/<name of your app> remote_consoleщоб відкрити віддалену оболонку на консолі вашої програми.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.