new-relixir icon indicating copy to clipboard operation
new-relixir copied to clipboard

preload fails when calling it with `nil` as first argument

Open ryanbjones opened this issue 7 years ago • 1 comments

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

ryanbjones avatar Aug 20 '18 17:08 ryanbjones

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

ryanbjones avatar Aug 20 '18 19:08 ryanbjones