Apakah ada Phoenix yang setara dengan Rails Console

94

Saya baru belajar Phoenix dan Elixir dan saya berasal dari Ruby / Rails tempat saya bekerja di REPL menggunakan pryuntuk memeriksa database dan status aplikasi saya.

Saya mencoba mencari cara untuk berinteraksi dengan database dan model saya di aplikasi Phoenix. Saya mengetahuinya iex, tetapi saya tidak tahu cara menggunakannya, periksa database aplikasi saya dari repl. Apakah saya perlu menghubungkannya dengan ecto setiap kali dari repl? Apakah ada yang rails consolesetara. Saya telah memeriksa dokumen Phoenix, Dosis Elixir, dan repo Ecto, tetapi tidak dapat menemukan apa yang saya cari. Apakah saya melewatkan sesuatu?

Edit: Berdasarkan jawaban di bawah ini saya menemukan ini bagian dari dokumentasi ecto. Berdasarkan ini saya dapat melakukan sesuatu sepertiArticlesApi.Repo.all ArticlesApi.Article

Chase Gilliam
sumber
2
Anda dapat menghemat mengetik dengan membuat alias nama modul: alias ArticlesApi.{Repo, Article}. Juga, perlu diingat bahwa Anda dapat dengan mudah mengkompilasi ulang modul individu dari konsol Anda ( r Article), atau mengkompilasi ulang seluruh proyek menggunakan recompile. Ini memungkinkan Anda untuk membiarkan iexsesi terbuka sepanjang waktu, menjaga alias tetap aktif.
hmans

Jawaban:

122

Anda dapat menjalankan iex -S mixuntuk menjalankan iexdengan dependensi dalam proyek campuran Anda saat ini yang disertakan .. Anda dapat membaca tentang ini di http://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html

Dari sana Anda dapat menjalankan kueri Ecto:

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

Berjalan iex -S mix phoenix.serverjuga akan memulai server phoenix.

Gazler
sumber
8
Juga perlu diperhatikan kenyamanan iex.exsfile di root proyek Anda untuk memungkinkan Anda mengatur alias (jadi Anda tidak harus mendahului semuanya dengan MyApp.). Contohnya adalah: alias MyApp.Repo alias MyApp.User alias MyApp.Car
David Kuhta
2
Apakah ada cara agar saya dapat menggunakan ini di lingkungan produksi?
Chris.Zou
@ Chris.Zou Ya, gunakan bin/my_app remote_consoledi shell jarak jauh Anda.
Nic Nilov
3
Ini sebenarnya iex -S mix phx.serversejak Phoenix 1.3.
oke56k
27

Untuk debug waktu proses, (seperti byebugatau debuggeratau prydi rel), gunakan

require IEx di bagian atas model atau pengontrol atau file tampilan Anda, lalu ketik

IEx.pry ke mana pun Anda membutuhkannya untuk dihentikan saat runtime dan melanjutkan debugging.

Ketik hbantuan di dalam konsol

Yang terpenting, setelah semua itu, restart server Anda dengan:

iex -S mix phoenix.server

Info lebih lanjut: di sini

Devaroop
sumber
4

Jika Anda sedang bekerja dalam pengembangan, gunakan iex -S mix phx.server.

Jika Anda perlu masuk ke konsol rilis yang di-deploy, buka direktori rilis Anda dan jalankan bin/<name of your app> remote_consoleuntuk membuka shell jarak jauh ke konsol aplikasi Anda.

Mark Wilbur
sumber