Sha256: 9856430130250d31ec9623e50aa692aee0843c0c2395cdb07a05b4d80e1ea7ef

Contents?: true

Size: 1.13 KB

Versions: 9

Compression:

Stored size: 1.13 KB

Contents

# frozen_string_literal: true

require 'eac_ruby_utils/core_ext'
require 'eac_rails_base0/paths'
require 'find'
require 'delegate'

module EacRailsBase0
  # A extended version of [Rails::Engine].
  class XEngine < SimpleDelegator
    class << self
      enable_simple_cache

      def require_local
        local_roots.each do |root|
          require_dependency "#{root.basename.to_path.gsub('-', '/')}/engine"
        end
      end

      def local_root
        ::Rails.root.join(::EacRailsBase0::Paths.engines_subpath)
      end

      private

      def all_uncached
        ::Rails::Engine.subclasses.map { |engine_class| new(engine_class.instance) }
      end

      def local_uncached
        all.select(&:local?)
      end

      def local_roots
        local_root.glob('*/*.gemspec').map(&:parent)
      end
    end

    def initialize(engine_instance)
      super(engine_instance)
    end

    def local?
      return false unless self.class.local_root.directory?

      ::Find.find(self.class.local_root.to_path).include?(config.root.to_path)
    end

    def namespace_module_name
      __getobj__.class.name.deconstantize
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
eac_rails_base0-0.68.1 lib/eac_rails_base0/x_engine.rb
eac_rails_base0-0.68.0 lib/eac_rails_base0/x_engine.rb
eac_rails_base0-0.67.0 lib/eac_rails_base0/x_engine.rb
eac_rails_base0-0.66.0 lib/eac_rails_base0/x_engine.rb
eac_rails_base0-0.65.0 lib/eac_rails_base0/x_engine.rb
eac_rails_base0-0.64.0 lib/eac_rails_base0/x_engine.rb
eac_rails_base0-0.63.1 lib/eac_rails_base0/x_engine.rb
eac_rails_base0-0.63.0 lib/eac_rails_base0/x_engine.rb
eac_rails_base0-0.62.0 lib/eac_rails_base0/x_engine.rb