Strange arrayfields behaviour

Here is a counterintuitive behaviour of the arrayfields.rb module.

It’s suppose to add light “indexing by keywords” capabilities to the
Array
class, without going all the way to hashes.

See http://rubyfurnace.com/docs/arrayfields-3.7.0/

However, after deleting items from an array, there is mismatch in the
fields.

Here is a small example:

require ‘arrayfields’
=> true
ar = [1, 2, 3]
=> [1, 2, 3]
ar.fields = [“one”, “two”, “three”]
=> [“one”, “two”, “three”]
ar[1]
=> 2
ar[“two”]
=> 2
ar
=> [1, 2, 3]
ar.delete_at(“two”) # ****** delete ar[“two”] ******
=> 2
ar[“two”] # ****** but there still is an ar[“two”] ******
=> 3
ar
=> [1, 3]
ar[“one”]
=> 1
ar[“three”]
=> nil
ar.keys
=> [“one”, “two”, “three”]

I don’t believe this is a bug. But this bit me.
Lesson learned: arrayfields don’t a Hash make.