-
Notifications
You must be signed in to change notification settings - Fork 63
Open
Description
The way the code is put together implies There Will Only Ever Be One Filter.
This is particularly annoying to test, as:
- You have to proxy the implementation to apply common stubbing techniques (Try RubyCAS::Filter.any_instance.expects(...) for example)
- @@config is global state
- The common way in which RubyCAS::Filter is recommended to be used (in a before_filter), and how it relies on the global configuration behaviour is complex
Having looked at the origins of this, I understand it's from the depths of 2006 or earlier, but it could do with a bit of love to remove the singleton nature and configuration pattern in favour of something more DI flavoured.
ie:
class YourController before_filter :configurize, :restrict def configurize client = CASClient.new() @filter = RubyCAS::Filter.new(client, config.rubycas) end def restrict @filter.filter(self) end end
Metadata
Metadata
Assignees
Labels
No labels