AE
Ash Elixir•3y ago
borpht

AshAdmin Liveview is crashing

Hi! I'm seeing a lot of errors like this in my Phoenix logs when I'm viewing the AshAdmin page for the read action of my resource:
[error] GenServer #PID<0.793.0> terminating
** (FunctionClauseError) no function clause matching in Kernel.get_in/2
(elixir 1.14.2) lib/kernel.ex:2670: Kernel.get_in(%{"_form_type" => "create", "description" => "", "name" => ""}, [])
(ash_admin 0.7.1) lib/ash_admin/components/resource/form.ex:1174: AshAdmin.Components.Resource.Form.handle_event/3
(phoenix_live_view 0.18.14) lib/phoenix_live_view/channel.ex:621: anonymous fn/4 in Phoenix.LiveView.Channel.inner_component_handle_event/4
(telemetry 1.2.1) /home/axe/personal/garage/deps/telemetry/src/telemetry.erl:321: :telemetry.span/3
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:207: Phoenix.LiveView.Diff.write_component/4
(phoenix_live_view 0.18.14) lib/phoenix_live_view/channel.ex:544: Phoenix.LiveView.Channel.component_handle_event/6
(stdlib 4.2) gen_server.erl:1123: :gen_server.try_dispatch/4
(stdlib 4.2) gen_server.erl:1200: :gen_server.handle_msg/6
(stdlib 4.2) proc_lib.erl:240: :proc_lib.init_p_do_apply/3
[error] GenServer #PID<0.793.0> terminating
** (FunctionClauseError) no function clause matching in Kernel.get_in/2
(elixir 1.14.2) lib/kernel.ex:2670: Kernel.get_in(%{"_form_type" => "create", "description" => "", "name" => ""}, [])
(ash_admin 0.7.1) lib/ash_admin/components/resource/form.ex:1174: AshAdmin.Components.Resource.Form.handle_event/3
(phoenix_live_view 0.18.14) lib/phoenix_live_view/channel.ex:621: anonymous fn/4 in Phoenix.LiveView.Channel.inner_component_handle_event/4
(telemetry 1.2.1) /home/axe/personal/garage/deps/telemetry/src/telemetry.erl:321: :telemetry.span/3
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:207: Phoenix.LiveView.Diff.write_component/4
(phoenix_live_view 0.18.14) lib/phoenix_live_view/channel.ex:544: Phoenix.LiveView.Channel.component_handle_event/6
(stdlib 4.2) gen_server.erl:1123: :gen_server.try_dispatch/4
(stdlib 4.2) gen_server.erl:1200: :gen_server.handle_msg/6
(stdlib 4.2) proc_lib.erl:240: :proc_lib.init_p_do_apply/3
I'm also seeing two warnings repeated:
warning: Unknown property "polymorphic_actions" for component <Form>
deps/ash_admin/lib/ash_admin/components/resource/resource.ex:106: AshAdmin.Components.Resource (module)

warning: Passing an atom to "for" in the form component is deprecated.
Instead of:

<.form :let={f} for={:action} ...>

You might do:

<.form :let={f} for={%{}} as={:action ...>

Or, if you prefer, use to_form to create a form in your LiveView:

assign(socket, form: to_form(%{}, as: :action))

and then use it in your templates (no :let required):

<.form for={@form}>

(phoenix_live_view 0.18.14) lib/phoenix_component.ex:1454: Phoenix.Component.to_form/2
(phoenix_live_view 0.18.14) lib/phoenix_component.ex:2155: Phoenix.Component."form (overridable 1)"/1
(phoenix_live_view 0.18.14) lib/phoenix_live_view/html_engine.ex:35: Phoenix.LiveView.HTMLEngine.component/3
(surface 0.9.4) lib/surface/components/form.ex:101: anonymous fn/2 in Surface.Components.Form."render (overridable 1)"/1
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:501: Phoenix.LiveView.Diff.invoke_dynamic/2
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:388: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:528: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
(elixir 1.14.2) lib/enum.ex:2468: Enum."-reduce/3-lists^foldl/2-0-"/3
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:388: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:528: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
(elixir 1.14.2) lib/enum.ex:2468: Enum."-reduce/3-lists^foldl/2-0-"/3
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:388: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:701: Phoenix.LiveView.Diff.render_component/9
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:646: anonymous fn/5 in Phoenix.LiveView.Diff.render_pending_components/6
(elixir 1.14.2) lib/enum.ex:2468: Enum."-reduce/3-lists^foldl/2-0-"/3
(stdlib 4.2) maps.erl:411: :maps.fold_1/3
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:619: Phoenix.LiveView.Diff.render_pending_components/6
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:146: Phoenix.LiveView.Diff.render/3
warning: Unknown property "polymorphic_actions" for component <Form>
deps/ash_admin/lib/ash_admin/components/resource/resource.ex:106: AshAdmin.Components.Resource (module)

warning: Passing an atom to "for" in the form component is deprecated.
Instead of:

<.form :let={f} for={:action} ...>

You might do:

<.form :let={f} for={%{}} as={:action ...>

Or, if you prefer, use to_form to create a form in your LiveView:

assign(socket, form: to_form(%{}, as: :action))

and then use it in your templates (no :let required):

<.form for={@form}>

(phoenix_live_view 0.18.14) lib/phoenix_component.ex:1454: Phoenix.Component.to_form/2
(phoenix_live_view 0.18.14) lib/phoenix_component.ex:2155: Phoenix.Component."form (overridable 1)"/1
(phoenix_live_view 0.18.14) lib/phoenix_live_view/html_engine.ex:35: Phoenix.LiveView.HTMLEngine.component/3
(surface 0.9.4) lib/surface/components/form.ex:101: anonymous fn/2 in Surface.Components.Form."render (overridable 1)"/1
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:501: Phoenix.LiveView.Diff.invoke_dynamic/2
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:388: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:528: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
(elixir 1.14.2) lib/enum.ex:2468: Enum."-reduce/3-lists^foldl/2-0-"/3
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:388: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:528: anonymous fn/4 in Phoenix.LiveView.Diff.traverse_dynamic/7
(elixir 1.14.2) lib/enum.ex:2468: Enum."-reduce/3-lists^foldl/2-0-"/3
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:388: Phoenix.LiveView.Diff.traverse/7
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:701: Phoenix.LiveView.Diff.render_component/9
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:646: anonymous fn/5 in Phoenix.LiveView.Diff.render_pending_components/6
(elixir 1.14.2) lib/enum.ex:2468: Enum."-reduce/3-lists^foldl/2-0-"/3
(stdlib 4.2) maps.erl:411: :maps.fold_1/3
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:619: Phoenix.LiveView.Diff.render_pending_components/6
(phoenix_live_view 0.18.14) lib/phoenix_live_view/diff.ex:146: Phoenix.LiveView.Diff.render/3
I'm not sure if these things are related? I'm using ash_phoenix 1.2.6, ash_admin 0.7.1 (from github branch phoenix-1.7) and phoenix 1.7.0-rc.3
8 Replies
ZachDaniel
ZachDaniel•3y ago
ah, so the phoenix-1.7 branch is now out of date
borpht
borphtOP•3y ago
I think that I had some incorrect actions on my resource, I went back to the default and it seems to be working
ZachDaniel
ZachDaniel•3y ago
thats all merged to main
borpht
borphtOP•3y ago
oh good to know, thanks!
ZachDaniel
ZachDaniel•3y ago
of course we can't release now until the next phoenix version is released...but oh well 😆 but looking at the code in main I feel like I did something to prevent specifically that bug
borpht
borphtOP•3y ago
maybe! I know there's supposed to be some help with doing this through the elixir sense module but I can't get that working right in Emacs 🙃
ZachDaniel
ZachDaniel•3y ago
you mean our elixir_sense plugin?
borpht
borphtOP•3y ago
I think so? I'm not sure and it's late sounds like a tomorrow problem anyway I'll mark this as resolved!

Did you find this page helpful?