new-relixir
new-relixir copied to clipboard
preload fails when calling it with `nil` as first argument
Ran in to this running unit tests where it doesn't seem to support handling preload the same
iex(1)> MyApp.Repo.preload(nil, :conversation)
nil
iex(2)> MyApp.Repo.NewRelic.preload(nil, :conversation)
** (Protocol.UndefinedError) protocol Ecto.Queryable not implemented for nil, the given module does not exist. This protocol is implemented for: Atom, BitString, Ecto.Query, Ecto.SubQuery, Tuple
(ecto) lib/ecto/queryable.ex:37: Ecto.Queryable.Atom.to_query/1
(new_relixir) lib/new_relixir/plug/instrumentation.ex:89: NewRelixir.Plug.Instrumentation.infer_model/1
(new_relixir) lib/new_relixir/plug/instrumentation.ex:60: NewRelixir.Plug.Instrumentation.put_model/2
(new_relixir) lib/new_relixir/plug/instrumentation.ex:49: NewRelixir.Plug.Instrumentation.instrument_db/4
EDIT: Note this is running this on Ecto 2.2.7
This also fails passing an empty list
iex(1)> MyApp.Repo.preload([], :conversation)
[]
iex(2)> MyApp.Repo.NewRelic.preload([], :conversation)
** (Protocol.UndefinedError) protocol Ecto.Queryable not implemented for []. This protocol is implemented for: Atom, BitString, Ecto.Query, Ecto.SubQuery, Tuple
(ecto) deps/ecto/lib/ecto/queryable.ex:1: Ecto.Queryable.impl_for!/1
(ecto) deps/ecto/lib/ecto/queryable.ex:9: Ecto.Queryable.to_query/1
(new_relixir) lib/new_relixir/plug/instrumentation.ex:92: NewRelixir.Plug.Instrumentation.infer_model/1
(new_relixir) lib/new_relixir/plug/instrumentation.ex:60: NewRelixir.Plug.Instrumentation.put_model/2
(new_relixir) lib/new_relixir/plug/instrumentation.ex:49: NewRelixir.Plug.Instrumentation.instrument_db/4