santoshbt

santoshbt

Cloak with changeset issue - (UndefinedFunctionError) function Cloak.EncryptedBinaryField.equal?/2 is undefined or private

Hi All,

I am using Cloak 0.6.2 version. It was working all good. I upgraded the Elixir version to Elixir 1.13.0, Phoenix - 1.5.9 and phoenix_pubsub : 2.0.
After upgrading, I am getting the following error

  • (exit) an exception was raised:
    ** (UndefinedFunctionError) function Cloak.EncryptedBinaryField.equal?/2 is undefined or private
    (cloak 0.6.2) Cloak.EncryptedBinaryField.equal?(nil, “Basement Flat, 2 Barons Court Road”)
    (ecto 3.7.2) lib/ecto/changeset.ex:576: Ecto.Changeset.cast_field/8

I am passing the changeset in this way
struct

|> cast(
  upcase(params, [:current_address_postcode]),
  ~w[
         current_address_street current_address_locality current_address_county
         current_address_postcode current_address_udprn
       ]a
)

It was working all good previously, now it is throwing error.
Any help to fix this, would be highly appreciated.

Thanks,
Santosh T

Most Liked

al2o3cr

al2o3cr

That version of Cloak is too outdated to work with the current version of Ecto - the semantics of Ecto.Type changed to require that equals? function in Add use Ecto.Type · elixir-ecto/ecto@c040b7c · GitHub

This issue suggests you’ll want to upgrade to at least Cloak 1.1.0:

stefanchrobot

stefanchrobot

I don’t think you need any data migration. An encrypted value has all the details of the cipher that was used for encryption.

stefanchrobot

stefanchrobot

What is the previous and the current version? Can you share your Cloak config (skipping the encryption key, obviously)?

stefanchrobot

stefanchrobot

Sorry for giving you a confusing advice. Since you’re updating from a pretty old version of Cloak, I think you should follow the upgrade guide and perform each minor version upgrade step by step, that is upgrade 0.6 to 0.7, 0.7 to. 0.8, etc. until you migrate to the latest one.

https://hexdocs.pm/cloak/0-6-x_to_0-7-x.html

As you can see in the guide, this indeed will require a data migration.

al2o3cr

al2o3cr

Like @stefanchrobot suggests, you’ll need to upgrade cloak incrementally to catch up. You’ll also need to do this before changing your Ecto etc version, as vintage cloaks are not compatible with current Ecto.

Where Next?

Popular in Questions Top

Brian
What is the proper way to load a module from a file in to IEX? In the python world, doing something like this pretty standard: from ....
New
senggen
Erlang/OTP 25 [erts-13.2.2] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] 15:22:35.803 [error] gen_event {lager_file_backend...
New
Tee
can someone please explain to me how Enum.reduce works with maps
New
LegitStack
I’m hoping you guys can give me some general advice and perhaps code examples if you’re feeling up to it. I’m very interested in Elixir,...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
fireproofsocks
I’m working on defining a simple Ecto schema for a table (in PostGres), but I don’t see where I can define a column as NOT NULL. Conside...
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
johnnyicon
Hi all, I've just started learning Elixir and Phoenix Framework, so please pardon my n00bness at this stage. I'm trying to use Postg...
New
WestKeys
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New

Other popular topics Top

Tee
can someone please explain to me how Enum.reduce works with maps
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
sergio
I couldn’t find any guides that worked well with Phoenix 1.6.0 and esbuild. I hope this helps people test the waters and eases you into t...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
chensan
I have a User schema with a :from_id field set to type :string: defmodule TweetBot.Repo.Migrations.CreateUsers do use Ecto.Migration ...
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
chrisalley
ExUnit now has describe blocks which is a welcome addition coming from RSpec. In the docs, it states that nested hierarchies of describe ...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
Nvim
Elixir appears to be a superior language to Python. I don’t see any advantage of Python over Elixir. Are there any?
New

We're in Beta

About us Mission Statement