SslRequirement module

This is a question is about the SslRequirement rails plugin. However, it's also about core concepts behind ruby modules.

Here's the code for the plugin.

http://pastie.caboo.se/73773

Here's an example of how you use it.

http://pastie.caboo.se/73774

I've used this plugin all over the place in my app. But now, I want to do some performance testing on the app WITHOUT using https (mainly because I don't have control over port 443 on the test machine). Ideally, I want to add a toggle variable to the module that I can set from an environment file or application_controller if I must. What I don't want to do is go around the app and comment out all my ssl_required statements.

I'm at a loss as where to inject this toggle, and whether it should be a class variable or class instance variable or maybe something completely different. Any and all advice is welcome.

--RYAN

PS - Yes, I've double posted this in the rails talk and ruby discussion groups.

You could change the third line of the ensure_proper_protocol method
in the plugin like so:

if ssl_required? && !request.ssl? && RAILS_ENV == 'production'

Or you could use your imagination and make some similar kind of
change somewhere in that method based on an environment variable, a
constant you set in one of the environment config files, etc.

Basically, you just want that method to not redirect and return
false, and there a number of ways you could accomplish that.

Ya, I saw that in another post here. That would work fine, but I feel there is a better way -- A meta-programming way. Unfortunately, I'm still getting my feet wet with injecting class variables / class instance variables via eval. I know it's more advanced then most rails talk, but any insight is appreciated.

-- RYAN

Sure, you could do a variety of more clever things like stub a method
in the plugin that can be overridden in the controller, like
acts_as_authenticated does with the authorized method. However, I
don't know that doing something like that is really better than a
simple tweak to the plugin.