Sha256: 1e07d775a26a76ae7c696da6708eb60c800a6605e9fd58e5465e6d6c5b0ec0c7

Contents?: true

Size: 1.46 KB

Versions: 21

Compression:

Stored size: 1.46 KB

Contents

module RailsConnector
  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') }
    module Rss

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

      @root_provider = nil

      # Stores the obj providing lambda for later use
      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.
      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

21 entries across 21 versions & 1 rubygems

Version Path
infopark_rails_connector-6.8.0.210.ed204b0 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.110.6570b45 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.72.d18d096 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.23.da7f96b lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.16.def5e85 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.15.a24f5ff lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.beta.200.891.647580e lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.beta.200.889.d503e42 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.beta.200.883.f5f063b lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.beta.200.884.4bd86e6 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.beta.200.869.9609b39 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.beta.200.856.8c0fec5 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.beta.200.809.bdfa8c3 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.beta.200.785.05d4af9 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.beta.200.744.99f67fc lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.beta.200.720.44fbabd lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.beta.200.713.e5c3150 lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.beta.200.681.7c84f4a lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.beta.200.663.ceecdee lib/rails_connector/configuration/rss.rb
infopark_rails_connector-6.8.0.beta.200.650.7c93155 lib/rails_connector/configuration/rss.rb