Przejdź do głównej zawartości

Przepisy na Elixir/Phoenix

Elixir zapewnia odporność na awarie i współbieżność, które inne języki dorabiają jako dodatek. Narzędzia AI czasem generują kod, który walczy z wzorcami OTP zamiast je wykorzystywać. Te przepisy produkują idiomatyczny Elixir — prawidłowe GenServery, zestawy zmian Ecto z prawdziwymi walidacjami i Phoenix LiveView, które poprawnie korzysta z socketa.

  • Przepisy na Phoenix API i LiveView z prawidłowymi wzorcami kanałów/socketów
  • Przepisy na schematy i zapytania Ecto z kompozycyjnymi zapytaniami i prawidłowymi zestawami zmian
  • Wzorce OTP: GenServer, drzewa Supervisorów i nadzór Tasków
  • Przepisy na testy dla ExUnit z prawidłowym sandboxem i wzorcami asynchronicznymi

Treść promptu poniżej jest identyczna niezależnie od tego, do którego narzędzia ją wkleisz — różni się to, jak każde z nich uruchamia wygenerowany kod i pakiet ExUnit, by domknąć pętlę. Przepisy na Elixir żyją i umierają wraz z mix test, więc prawdziwa wartość tkwi w tym, jak każde narzędzie iteruje względem wygenerowanych zestawów zmian i procesów OTP.

Wklej przepis do trybu agentowego i pozwól mu w jednym przebiegu zbudować kontekst, schemat i testy. Następnie utrzymuj checkpoint przed uruchomieniem mix test w zintegrowanym terminalu — jeśli wygenerowane walidacje changesetu lub dopasowania wzorców zawiodą, wróć do checkpointu i dopracuj prompt, zamiast ręcznie łatać na wpół zepsuty moduł. Inline-edycje w Cursorze są idealne do dalszej pracy: zaznacz pojedynczą klauzulę handle_info i poproś “make this exhaustive for every status enum value”.


Scenariusz: Potrzebujesz REST API do aplikacji zarządzania zadaniami z prawidłową walidacją i formatowaniem błędów.

Oczekiwany wynik: Moduł kontekstu, schemat z changesetem, kontroler, widoki JSON, specyfikacja OpenAPI i testy.


Przepis 2: Phoenix LiveView — panel w czasie rzeczywistym

Dział zatytułowany „Przepis 2: Phoenix LiveView — panel w czasie rzeczywistym”

Scenariusz: Twój panel wyświetla metryki na żywo, które aktualnie wymagają odświeżania strony. Potrzebujesz aktualizacji w czasie rzeczywistym.

Oczekiwany wynik: Moduł LiveView, 3 LiveComponents, subskrypcje PubSub, hooki JS i testy LiveViewTest.


Scenariusz: Twoje API potrzebuje ograniczania liczby zapytań per użytkownik, ale nie chcesz zewnętrznej zależności jak Redis.

Oczekiwany wynik: GenServer, optymalizacja ETS, middleware Plug, wsparcie dystrybucji i testy.


Scenariusz: Tworzenie zamówienia obejmuje aktualizacje stanów magazynowych, tworzenie rekordów płatności i wysyłanie powiadomień — jeśli jakikolwiek krok zawiedzie, wszystko powinno zostać wycofane.

Oczekiwany wynik: Potok Ecto.Multi, obsługa błędów, rozgłaszanie PubSub i testy transakcji.


Scenariusz: Potrzebujesz niezawodnych zadań w tle z ponawianiem, harmonogramowaniem i monitorowaniem.

Oczekiwany wynik: Konfiguracja Oban, 3 workery, harmonogram cron, ograniczenia unikalności i testy workerów.


Scenariusz: Twoje API potrzebuje uwierzytelniania JWT z kontrolą dostępu opartą na rolach i odświeżaniem tokenów.

Oczekiwany wynik: Konfiguracja Guardian, potok auth, plug roli, kontroler auth, unieważnanie tokenów i testy.


Scenariusz: Twoje zapytania są zduplikowane między kontekstami z drobnymi różnicami. Potrzebujesz kompozycyjnego, wielokrotnego użytku w budowaniu zapytań.

Oczekiwany wynik: Moduł QueryBuilder, zakresy, helpery preload, zapytania agregujące i testy kompozycji.


Scenariusz: Potrzebujesz czatu wielopokojowego ze śledzeniem obecności i trwałym przechowywaniem wiadomości.

Oczekiwany wynik: Kanał pokoju, trwałość wiadomości, śledzenie obecności, wskaźniki pisania i testy kanałów.


Scenariusz: Twoja aplikacja ma komponenty, które padają niezależnie. Potrzebujesz prawidłowego nadzoru dla izolacji awarii.

Oczekiwany wynik: Supervisor aplikacji, WorkerSupervisor, ConnectionPool z DynamicSupervisor i testy restartów.


Scenariusz: Twoje wdrożenie kopiuje projekt na serwer i uruchamia mix phx.server. Potrzebujesz prawidłowych releasów.

Oczekiwany wynik: Konfiguracja releasu, runtime.exs, skrypty migracji, Dockerfile, workflow CI i testy uruchomienia.