Sha256: 1f9a1260d8e852362a05a238dafe8648f5fa73bd066bdac8ee2b9f939444d05b

Contents?: true

Size: 1.58 KB

Versions: 22

Compression:

Stored size: 1.58 KB

Contents

module RailsConnector
  # @api public
  class Configuration

    # This module adds configuration options for the RSS feature.
    #
    # Specify the RSS root in
    # <code><em>RAILS_ROOT</em>/config/initializers/rails_connector.rb</code>:
    #   RailsConnector::Configuration::Rss.root = lambda { NamedLink.get_object('news') }
    # @api public
    module Rss

      # Raised if no RSS root object has been specified.
      # @api public
      class RootUndefined < StandardError; end
      # Raised if the root is missing when accessing it
      # Inherits from {RootUndefined} for compatibility reasons
      # @api public
      class RootNotFound < RootUndefined; end

      @root_provider = nil

      # Stores the obj providing lambda for later use
      # @api public
      def self.root=(obj_provider)
        case obj_provider
        when Obj
          Rails.logger.warn("Rss.root= called with an Obj. Use an Obj returning lambda instead.")
          root_id = obj_provider.id
          @root_provider = lambda { Obj.find(root_id) }
        when Proc
          @root_provider = obj_provider
        else
          raise ArgumentError.new("Rss.root= called with '#{obj_provider.class.name}' instead of a lambda.")
        end
      end

      # Returns the RSS root object.
      # If no RSS root has been specified then {Rss::RootUndefined} is raised.
      # @api public
      def self.root
        raise RootUndefined unless @root_provider
        begin
          @root_provider.call
        rescue RailsConnector::ResourceNotFound
          raise RootNotFound
        end
      end
    end

  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
infopark_rails_connector-6.8.3.174.51542603 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.3.115.227021242 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.3.73.75172665 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.3.2.153416031 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.3.67.110847540 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.3.1.23895778 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.2.36.82613853 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.2.7.128454143 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.1.26.236500544 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.1 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.539.93842523 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.529.114081979 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.518.30999728 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.515.34928522 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.498.46559598 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.480.261594408 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.444.171626367 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.406.131718077 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.356.19698103 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.348.160665197 lib/rails_connector/configuration/rss.rb