Sha256: ac7d2fd90d6f0351c9429f7e52af848192549d3f063cf959c037f5166111a64e

Contents?: true

Size: 1.52 KB

Versions: 13

Compression:

Stored size: 1.52 KB

Contents

module Gretel
  module Crumbs
    class << self
      include Resettable

      # Stores the supplied block for later use.
      def crumb(key, &block)
        crumbs[key] = block
      end

      # Returns a hash of all stored crumb blocks.
      def crumbs
        @crumbs ||= {}
      end

      # Returns true if a crumb with the given key has been set.
      def crumb_defined?(key)
        crumbs.has_key?(key)
      end

      # Loads the breadcrumb configuration files.
      def load_breadcrumbs
        @crumbs = {}

        loaded_file_mtimes.clear
        breadcrumb_files.each do |file|
          instance_eval open(file).read, file
          loaded_file_mtimes << File.mtime(file)
        end

        @loaded = true
      end

      # Reloads the breadcrumb configuration files if they have changed.
      def reload_if_needed
        load_breadcrumbs if reload?
      end

      # Returns true if a breadcrumbs reload is needed based on configuration file changes.
      def reload?
        return true unless loaded?
        return false unless Gretel.reload_environments.include?(Rails.env)

        loaded_file_mtimes != breadcrumb_files.map { |file| File.mtime(file) }
      end

      # Returns true if the breadcrumb configuration files have been loaded.
      def loaded?
        !!@loaded
      end

      # List of breadcrumb configuration files.
      def breadcrumb_files
        Dir[*Gretel.breadcrumb_paths]
      end

    private

      def loaded_file_mtimes
        @loaded_file_mtimes ||= []
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 2 rubygems

Version Path
gretel-4.0.2 lib/gretel/crumbs.rb
gretel-4.0.1 lib/gretel/crumbs.rb
gretel-4.0.0 lib/gretel/crumbs.rb
gretel-lite-3.0.10 lib/gretel/crumbs.rb
gretel-3.0.9 lib/gretel/crumbs.rb
gretel-3.0.8 lib/gretel/crumbs.rb
gretel-3.0.7 lib/gretel/crumbs.rb
gretel-3.0.6 lib/gretel/crumbs.rb
gretel-3.0.5 lib/gretel/crumbs.rb
gretel-3.0.4 lib/gretel/crumbs.rb
gretel-3.0.3 lib/gretel/crumbs.rb
gretel-3.0.2 lib/gretel/crumbs.rb
gretel-3.0.1 lib/gretel/crumbs.rb