alias_method_chain stack level too deep in Rake test only

I have an odd error. I have the following module:

module ActionController   module SslSupport

    def self.included(base)       raise "#{base} does not define url_for" unless base.method_defined?(:url_for)       unless base.respond_to?(:url_for_without_ssl_supprt)         base.send :include, InstanceMethods         base.send :alias_method_chain, :url_for, :ssl_support       end     end

    module InstanceMethods

      def url_for_with_ssl_support(options)         new_options = options.dup

        if options.kind_of?(Hash)           new_options.merge!({ :only_path => false }) if request.ssl? ^ url_ssl?(new_options)           if url_ssl?(new_options)             new_options.merge!({ :protocol => 'https' })             if ['development'].include?(ENV['RAILS_ENV'])               new_options.merge!({ :port => 3001, :host => request.host })             end           end           new_options.delete(:ssl)         end

        url_for_without_ssl_support(new_options)       end

      private

      def url_ssl?(options)         case options         when Hash           protocol = options[:protocol] || 'http://'           return options[:ssl] || protocol =~ /^https/         when String           return options =~ /^https/         else           return self.class.method_defined?(:request) ? request.ssl? : false         end       end

    end

  end end

It is included in app/controllers/application.rb and in ActionView::Base. If I run

ruby test/functional/people_controller_test.rb or ruby test/functional/ account_controller_test.rb, everything runs fine. If I run rake test:functionals, however, I get a "stack level too deep" within url_for within those two test classes.

Example output:

test_spec {The Account controller A guest (in general)} 001 [should be able to view the sign-up page](The Account controller A guest (in general)): ActionView::TemplateError: stack level too deep     On line #8 of app/views/account/start.rhtml

    5: <h1>Create a free account in three steps:</h1>     6:     7: <ol>     8: <li>a.&nbsp;<%= link_to 'Choose', :action => 'choose' %></li>     9: <li>b.&nbsp;Create</li>     10: <li>c.&nbsp;Customize</li>     11: </ol>     lib/action_controller/ssl_support.rb:36:in `url_ssl?'     lib/action_controller/ssl_support.rb:19:in `url_for_without_ssl_support'     lib/action_controller/ssl_support.rb:28:in `url_for'     vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb: 70:in `send'     vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb: 70:in `url_for_without_ssl_support'     lib/action_controller/ssl_support.rb:28:in `url_for'     vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb: 136:in `link_to'

I figured that my self.included(base) would guard against this, but it doesn't seem to work. Any thoughts?

-Gaius

I suppose I meant 'method_defined?' instead of 'respond_to?' but that doesn't change the problem.

-Gaius