tfwright / live_admin

Low-config admin UI for Phoenix apps, built on LiveView
MIT License
251 stars 22 forks source link

function nil.all/2 is undefined #50

Closed Rio517 closed 1 year ago

Rio517 commented 1 year ago

I set up an empty Phoenix project to make sure I was getting the configuration right, but ran into this error. Perhaps I made an error.

[error] GenServer #PID<0.2196.0> terminating
** (UndefinedFunctionError) function nil.all/2 is undefined
    nil.all(#Ecto.Query<from p0 in VanillaPhoenix.Posts.Post, order_by: [asc: p0.id], limit: 10, offset: ^0>, [prefix: nil])
    (live_admin 0.9.1) lib/live_admin/resource.ex:189: LiveAdmin.Resource.build_list/3
    (live_admin 0.9.1) lib/live_admin/components/resource/index.ex:22: LiveAdmin.Components.Container.Index.update/2
    (phoenix_live_view 0.19.3) lib/phoenix_live_view/utils.ex:487: Phoenix.LiveView.Utils.maybe_call_update!/3
    (phoenix_live_view 0.19.3) lib/phoenix_live_view/diff.ex:653: anonymous fn/5 in Phoenix.LiveView.Diff.render_pending_components/6
    (elixir 1.14.4) lib/enum.ex:2468: Enum."-reduce/3-lists^foldl/2-0-"/3
    (stdlib 4.3) maps.erl:411: :maps.fold_1/3
    (phoenix_live_view 0.19.3) lib/phoenix_live_view/diff.ex:629: Phoenix.LiveView.Diff.render_pending_components/6
    (phoenix_live_view 0.19.3) lib/phoenix_live_view/diff.ex:143: Phoenix.LiveView.Diff.render/3
    (phoenix_live_view 0.19.3) lib/phoenix_live_view/channel.ex:833: Phoenix.LiveView.Channel.render_diff/3
    (phoenix_live_view 0.19.3) lib/phoenix_live_view/channel.ex:469: Phoenix.LiveView.Channel.mount_handle_params_result/3
    (phoenix_live_view 0.19.3) lib/phoenix_live_view/channel.ex:1043: Phoenix.LiveView.Channel.verified_mount/8
    (phoenix_live_view 0.19.3) lib/phoenix_live_view/channel.ex:59: Phoenix.LiveView.Channel.handle_info/2
    (stdlib 4.3) gen_server.erl:1123: :gen_server.try_dispatch/4
    (stdlib 4.3) gen_server.erl:1200: :gen_server.handle_msg/6
    (stdlib 4.3) proc_lib.erl:240: :proc_lib.init_p_do_apply/3
Last message: {Phoenix.Channel, %{"params" => %{"_csrf_token" => "Aj8TNEZ0OHs9Hg1DFnU7DUI-PAMMCiQhoRqe66h4Zn9vXDjKszouEYJx", "_mounts" => 0}, "session" => "SFMyNTY.g2gDaAJhBXQAAAAIZAACaWRtAAAAFHBoeC1GMjd3U2NvSG1aZzlaQXVIZAAMbGl2ZV9zZXNzaW9uaAJkABFsaXZlX2FkbWluXy9hZG1pbm4IAERq4WsO8G4XZAAKcGFyZW50X3BpZGQAA25pbGQACHJvb3RfcGlkZAADbmlsZAAJcm9vdF92aWV3ZAAlRWxpeGlyLkxpdmVBZG1pbi5Db21wb25lbnRzLkNvbnRhaW5lcmQABnJvdXRlcmQAH0VsaXhpci5WYW5pbGxhUGhvZW5peFdlYi5Sb3V0ZXJkAAdzZXNzaW9udAAAAAVtAAAACWJhc2VfcGF0aG0AAAAGL2FkbWlubQAAAApjb21wb25lbnRzdAAAAAZkAARlZGl0ZAAqRWxpeGlyLkxpdmVBZG1pbi5Db21wb25lbnRzLkNvbnRhaW5lci5Gb3JtZAAEaG9tZWQAKEVsaXhpci5MaXZlQWRtaW4uQ29tcG9uZW50cy5Ib21lLkNvbnRlbnRkAARsaXN0ZAArRWxpeGlyLkxpdmVBZG1pbi5Db21wb25lbnRzLkNvbnRhaW5lci5JbmRleGQAA25hdmQAH0VsaXhpci5MaXZlQWRtaW4uQ29tcG9uZW50cy5OYXZkAANuZXdkACpFbGl4aXIuTGl2ZUFkbWluLkNvbXBvbmVudHMuQ29udGFpbmVyLkZvcm1kAAdzZXNzaW9uZAArRWxpeGlyLkxpdmVBZG1pbi5Db21wb25lbnRzLlNlc3Npb24uQ29udGVudG0AAAAEcmVwb2QAA25pbG0AAAAKc2Vzc2lvbl9pZG0AAAAkY2EwZWQ3OWUtZjA3MS00ZjlkLWIyMDgtMWY0OGY1M2UzMGU1bQAAAAV0aXRsZW0AAAAJTGl2ZUFkbWluZAAEdmlld2QAJUVsaXhpci5MaXZlQWRtaW4uQ29tcG9uZW50cy5Db250YWluZXJuBgCHNX0liQFiAAFRgA.h1upa5iXBYTd_fT0mzBchLvns-ZNy-2hOCYjiQACQJw", "static" => "SFMyNTY.g2gDaAJhBXQAAAADZAAKYXNzaWduX25ld2pkAAVmbGFzaHQAAAAAZAACaWRtAAAAFHBoeC1GMjd3U2NvSG1aZzlaQXVIbgYAhzV9JYkBYgABUYA.oGPtGQuvF4zhl-_zw0GQZK1jkNDyu2T3OyPnnYhNASI", "url" => "http://local.wunderwork.io:4000/admin/posts"}, {#PID<0.2184.0>, #Reference<0.2342050874.256114691.122563>}, %Phoenix.Socket{assigns: %{}, channel: Phoenix.LiveView.Channel, channel_pid: nil, endpoint: VanillaPhoenixWeb.Endpoint, handler: Phoenix.LiveView.Socket, id: nil, joined: false, join_ref: "4", private: %{connect_info: %{session: %{"_csrf_token" => "mmbQpBPOgp45N1QF1DSvISnY"}}}, pubsub_server: VanillaPhoenix.PubSub, ref: nil, serializer: Phoenix.Socket.V2.JSONSerializer, topic: "lv:phx-F27wScoHmZg9ZAuH", transport: :websocket, transport_pid: #PID<0.2184.0>}}
State: #Reference<0.2342050874.256114691.122565>
[error] an exception was raised:
    ** (UndefinedFunctionError) function nil.all/2 is undefined
        nil.all(#Ecto.Query<from p0 in VanillaPhoenix.Posts.Post, order_by: [asc: p0.id], limit: 10, offset: ^0>, [prefix: nil])
        (live_admin 0.9.1) lib/live_admin/resource.ex:189: LiveAdmin.Resource.build_list/3
        (live_admin 0.9.1) lib/live_admin/components/resource/index.ex:22: LiveAdmin.Components.Container.Index.update/2
        (phoenix_live_view 0.19.3) lib/phoenix_live_view/utils.ex:487: Phoenix.LiveView.Utils.maybe_call_update!/3
        (phoenix_live_view 0.19.3) lib/phoenix_live_view/diff.ex:653: anonymous fn/5 in Phoenix.LiveView.Diff.render_pending_components/6
        (elixir 1.14.4) lib/enum.ex:2468: Enum."-reduce/3-lists^foldl/2-0-"/3
        (stdlib 4.3) maps.erl:411: :maps.fold_1/3
        (phoenix_live_view 0.19.3) lib/phoenix_live_view/diff.ex:629: Phoenix.LiveView.Diff.render_pending_components/6
        (phoenix_live_view 0.19.3) lib/phoenix_live_view/diff.ex:143: Phoenix.LiveView.Diff.render/3
        (phoenix_live_view 0.19.3) lib/phoenix_live_view/channel.ex:833: Phoenix.LiveView.Channel.render_diff/3
        (phoenix_live_view 0.19.3) lib/phoenix_live_view/channel.ex:469: Phoenix.LiveView.Channel.mount_handle_params_result/3
        (phoenix_live_view 0.19.3) lib/phoenix_live_view/channel.ex:1043: Phoenix.LiveView.Channel.verified_mount/8
        (phoenix_live_view 0.19.3) lib/phoenix_live_view/channel.ex:59: Phoenix.LiveView.Channel.handle_info/2
        (stdlib 4.3) gen_server.erl:1123: :gen_server.try_dispatch/4
        (stdlib 4.3) gen_server.erl:1200: :gen_server.handle_msg/6
        (stdlib 4.3) proc_lib.erl:240: :proc_lib.init_p_do_apply/3

Steps to reproduce:

mix phx.new vanilla_phoenix
cd vanilla_phoenix
mix deps.get
mix phx.gen.live Posts Post posts  title:string hidden:boolean view:integer
[copy over routes]
mix ecto.setup

Setup live_admin

{:live_admin, "0.9.1"}

Router

  import LiveAdmin.Router

  scope "/", VanillaPhoenixWeb do
    pipe_through :browser

     # bla bla

    live_admin "/admin" do
      admin_resource("/posts", VanillaPhoenix.Posts.Post)
    end
  end

Resource Config in post.ex

defmodule VanillaPhoenix.Posts.Post do
  use Ecto.Schema
  use LiveAdmin.Resource
.
.
.
end

Start App

iex -S mix phx.server

visit /admin and click to posts.

This is using latest phoenix/live_view

  "live_admin": {:hex, :live_admin, "0.9.1", "570dbfe0173185f47807a182628c1d020334b183724915b3725b9dc5b4188246", [:mix], [{:ecto, "~> 3.8", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.8", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:phoenix_ecto, "~> 4.4", [hex: :phoenix_ecto, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}], "hexpm", "248a93b9fac43b6f404bd52a92ae17bd2c3d2153d5f539c72f7b1bd31e966165"},

"phoenix": {:hex, :phoenix, "1.7.6", "61f0625af7c1d1923d582470446de29b008c0e07ae33d7a3859ede247ddaf59a", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "f6b4be7780402bb060cbc6e83f1b6d3f5673b674ba73cc4a7dd47db0322dfb88"},
  "phoenix_ecto": {:hex, :phoenix_ecto, "4.4.2", "b21bd01fdeffcfe2fab49e4942aa938b6d3e89e93a480d4aee58085560a0bc0d", [:mix], [{:ecto, "~> 3.5", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "70242edd4601d50b69273b057ecf7b684644c19ee750989fd555625ae4ce8f5d"},
  "phoenix_html": {:hex, :phoenix_html, "3.3.1", "4788757e804a30baac6b3fc9695bf5562465dd3f1da8eb8460ad5b404d9a2178", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "bed1906edd4906a15fd7b412b85b05e521e1f67c9a85418c55999277e553d0d3"},
  "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.8.0", "0b3158b5b198aa444473c91d23d79f52fb077e807ffad80dacf88ce078fa8df2", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:ecto_sqlite3_extras, "~> 1.1.7", [hex: :ecto_sqlite3_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.19.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "87785a54474fed91a67a1227a741097eb1a42c2e49d3c0d098b588af65cd410d"},
  "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.4.1", "2aff698f5e47369decde4357ba91fc9c37c6487a512b41732818f2204a8ef1d3", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "9bffb834e7ddf08467fe54ae58b5785507aaba6255568ae22b4d46e2bb3615ab"},
  "phoenix_live_view": {:hex, :phoenix_live_view, "0.19.3", "3918c1b34df8ac71a9a636806ba5b7f053349a0392b312e16f35b0bf4d070aab", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "545626887948495fd8ea23d83b75bd7aaf9dc4221563e158d2c4b52ea1dd7e00"},
  "phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
  "phoenix_template": {:hex, :phoenix_template, "1.0.1", "85f79e3ad1b0180abb43f9725973e3b8c2c3354a87245f91431eec60553ed3ef", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "157dc078f6226334c91cb32c1865bf3911686f8bcd6bcff86736f6253e6993ee"},
  "phoenix_view": {:hex, :phoenix_view, "2.0.2", "6bd4d2fd595ef80d33b439ede6a19326b78f0f1d8d62b9a318e3d9c1af351098", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}], "hexpm", "a929e7230ea5c7ee0e149ffcf44ce7cf7f4b6d2bfe1752dd7c084cdff152d36f"},
  "plug": {:hex, :plug, "1.14.2", "cff7d4ec45b4ae176a227acd94a7ab536d9b37b942c8e8fa6dfc0fff98ff4d80", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "842fc50187e13cf4ac3b253d47d9474ed6c296a8732752835ce4a86acdf68d13"},
  "plug_cowboy": {:hex, :plug_cowboy, "2.6.1", "9a3bbfceeb65eff5f39dab529e5cd79137ac36e913c02067dba3963a26efe9b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613"},
Rio517 commented 1 year ago

ugh. I still made a config error. Sign. Sorry.

config :live_admin, ecto_repo: VanillaPhoenix.Repo

but maybe add that to the readme/

tfwright commented 1 year ago

2b7ece7