Defining a Module on a Class from an Included Module
March 23, 2017
Today, I came across a bug in our code that was introduced when two different Ruby classes included the same module. I had a constant declared within the module and thought I had it defined such that each class would include its own copy of the constant.
It looked something like this:
Note: If you are unfamiliar with ActiveSupport::Concern, it is a Rails class that provides a slight shortcut to writing the slightly longer version of the code. It is certainly debatable whether the Rails approach buys much of an advantage. For a broader discussion about concerns, I suggest checking out this article.
I thought (incorrectly) that CrowdfundingPage::LAYOUTS would be a different hash than AccountPage::LAYOUTS, but comparing the object_id of each proved otherwise.
To correctly ensure that the two LAYOUTS are two different hashes, we could do the following: