Liquid rendering is unexpectedly changing the "context" attribute on non-Drop classes
Background: I have a Rails app with several classes that are used in Liquid rendering like this:
class Thingy < ApplicationRecord
def to_liquid
LiquidDrops::Thingy.new(record: self)
end
end
module LiquidDrops
class Thingy < Liquid::Drop
attr_accessor :record
def name
record.name
end
end
end
so I can then write {{ my_thingy.name }}, render it with a context like { 'my_thingy' => some_thingy }, and get the right output.
Since upgrading from liquid 5.4.0 to 5.5.0, I've noticed a problem with one of my models that happens to have an attribute named context. Whenever I render some liquid involving that model, it updates the value of context to a Liquid::Context (or a string like "#<Liquid::Context:0x000073767f8c1540>"), even if I'm not doing {{ my_thingy.context }}. This has caused problems where I end up with incorrect values of context in the database.
I suspect this is an unintended side effect of https://github.com/Shopify/liquid/commit/a5e5fab82a8f52f7045c329c15c3663ed25820a0. Would it be possible to limit that change to only set variable.context if variable is a Liquid::Drop, not some arbitrary other type of record?
Thanks for your time!