I'm not a big fan of using a protected method where inheritance will do. I'd rather see the current contents of `warn_about_public_url` become the default contents of `public_url`, and have subclasses call `super` if they want to emit a warning.