มี Phoenix เทียบเท่ากับ Rails Console หรือไม่


94

ฉันเพิ่งเรียนรู้ Phoenix และ Elixir และฉันมาจาก Ruby / Rails ซึ่งฉันทำงานใน REPL pryเพื่อตรวจสอบฐานข้อมูลและสถานะแอปพลิเคชัน

ฉันกำลังพยายามหาวิธีโต้ตอบกับฐานข้อมูลและโมเดลของฉันในแอพ Phoenix ฉันรู้iexแต่ฉันไม่รู้วิธีใช้มันตรวจสอบฐานข้อมูลแอปของฉันจากตัวจำลอง ฉันจำเป็นต้องเชื่อมต่อกับ ecto ทุกครั้งจากการจำลองหรือไม่ มีrails consoleเทียบเท่า. ฉันได้ตรวจสอบเอกสาร Phoenix, Elixir Dose และ Ecto repo แล้ว แต่ไม่พบสิ่งที่ต้องการ ฉันพลาดอะไรไปรึเปล่า?

แก้ไข: จากคำตอบด้านล่างฉันพบส่วนนี้ของ ecto docs จากสิ่งนี้ฉันสามารถทำสิ่งต่างๆเช่นArticlesApi.Repo.all ArticlesApi.Article


2
คุณสามารถบันทึกการพิมพ์บางอย่างโดย aliasing 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จะเริ่มเซิร์ฟเวอร์ฟีนิกซ์ด้วย


8
นอกจากนี้ยังควรสังเกตความสะดวกของiex.exsไฟล์ในรูทของโปรเจ็กต์ของคุณเพื่อให้คุณสามารถตั้งค่านามแฝงได้ (ดังนั้นคุณไม่จำเป็นต้องนำหน้าทุกอย่างด้วยMyApp.) ตัวอย่างจะเป็น: alias MyApp.Repo alias MyApp.User alias MyApp.Car
David Kuhta

2
มีวิธีใช้สิ่งนี้ในสภาพแวดล้อมการผลิตหรือไม่?
Chris.Zou

@ Chris.Zou ใช่ใช้bin/my_app remote_consoleในรีโมตเชลล์ของคุณ
Nic Nilov

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เพื่อเปิดรีโมตเชลล์ไปยังคอนโซลของแอพของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.