Sha256: cb7bb1f0aa0a830ce668fa643ad96cff6f861ad02f81163162d4ed667cc25e1d

Contents?: true

Size: 1.18 KB

Versions: 35

Compression:

Stored size: 1.18 KB

Contents

# encoding: utf-8
module Warden
  module Strategies
    class << self
      # Add a strategy and store it in a hash.
      def add(label, strategy = nil, &block)
        strategy ||= Class.new(Warden::Strategies::Base)
        strategy.class_eval(&block) if block_given?

        unless strategy.method_defined?(:authenticate!)
          raise NoMethodError, "authenticate! is not declared in the #{label.inspect} strategy"
        end

        unless strategy.ancestors.include?(Warden::Strategies::Base)
          raise "#{label.inspect} is not a #{base}"
        end

        _strategies[label] = strategy
      end

      # Update a previously given strategy.
      def update(label, &block)
        strategy = _strategies[label]
        raise "Unknown strategy #{label.inspect}" unless strategy
        add(label, strategy, &block)
      end

      # Provides access to strategies by label
      # :api: public
      def [](label)
        _strategies[label]
      end

      # Clears all declared.
      # :api: public
      def clear!
        _strategies.clear
      end

      # :api: private
      def _strategies
        @strategies ||= {}
      end
    end # << self
  end # Strategies
end # Warden

Version data entries

35 entries across 34 versions & 3 rubygems

Version Path
devise_sociable-0.1.0 vendor/bundle/gems/warden-1.2.1/lib/warden/strategies.rb
devise_sociable-0.1.0 vendor/bundle/gems/warden-1.0.6/lib/warden/strategies.rb
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/warden-1.2.1/lib/warden/strategies.rb
sunrise-cms-0.3.3 vendor/bundle/ruby/1.9.1/gems/warden-1.1.1/lib/warden/strategies.rb
sunrise-cms-0.3.2 vendor/bundle/ruby/1.9.1/gems/warden-1.1.1/lib/warden/strategies.rb
sunrise-cms-0.3.1 vendor/bundle/ruby/1.9.1/gems/warden-1.1.1/lib/warden/strategies.rb
sunrise-cms-0.3.0 vendor/bundle/ruby/1.9.1/gems/warden-1.1.1/lib/warden/strategies.rb
warden-1.2.1 lib/warden/strategies.rb
sunrise-cms-0.3.0.rc vendor/bundle/ruby/1.9.1/gems/warden-1.1.1/lib/warden/strategies.rb
warden-1.2.0 lib/warden/strategies.rb
warden-1.1.1 lib/warden/strategies.rb
warden-1.1.0 lib/warden/strategies.rb
warden-1.0.6 lib/warden/strategies.rb
warden-1.0.5 lib/warden/strategies.rb
warden-1.0.4 lib/warden/strategies.rb
warden-1.0.3 lib/warden/strategies.rb
warden-1.0.2 lib/warden/strategies.rb
warden-1.0.1 lib/warden/strategies.rb
warden-1.0.0 lib/warden/strategies.rb
warden-0.10.7 lib/warden/strategies.rb