Corrigir problema de codificação com Ecto e Poison

Na versão mais recente do Ecto 0.15.0, tive o seguinte erro ao tentar codificar um modelo de estrutura:

%User{name: "test"} 

Mas isso gera um erro:

unable to encode value: {nil, "users"}

Por quê? Porque contém os dados privados __meta__dentro da estrutura, com uma tupla como valor, que não é analisada corretamente pelo Poison.

A solução foi implementar o seguinte caso de cláusula Poison.Encoder:

defimpl Poison.Encoder, for: Any do
def encode(%{__struct__: _} = struct, options) do
map
= struct
|> Map.from_struct
|> sanitize_map
Poison.Encoder.Map.encode(map, options)
end

defp sanitize_map
(map) do
Map.drop(map, [:__meta__, :__struct__])
end
end

Isso está relacionado a este problema do github .