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


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.


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


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.