class Deface::Environment::Overrides

Attributes

all[RW]

Public Class Methods

new() click to toggle source
# File lib/deface/environment.rb, line 46
def initialize
  @all = {}
end

Public Instance Methods

early_check() click to toggle source
# File lib/deface/environment.rb, line 66
def early_check
  Deface::Override._early.each do |args|
    Deface::Override.new(args)
  end

  Deface::Override._early.clear
end
find(*args) click to toggle source
# File lib/deface/environment.rb, line 50
def find(*args)
  Deface::Override.find(*args)
end
load_all(app) click to toggle source
# File lib/deface/environment.rb, line 54
def load_all(app)
  # clear overrides before reloading them
  app.config.deface.overrides.all.clear
  Deface::DSL::Loader.register

  # check all railties / engines / extensions / application for overrides
  app.railties._all.dup.push(app).each do |railtie|
    next unless railtie.respond_to? :root
    load_overrides(railtie)
  end
end

Private Instance Methods

enumerate_and_load(paths, root) click to toggle source
# File lib/deface/environment.rb, line 82
def enumerate_and_load(paths, root)
  paths ||= ["app/overrides"]

  paths.each do |path|
    # add path to watchable_dir so Rails will call to_prepare on file changes
    # allowing overrides to be updated / reloaded in development mode.
    Rails.application.config.watchable_dirs[root.join(path).to_s] = [:rb, :deface]

    Dir.glob(root.join path, "**/*.rb") do |c|
      Rails.application.config.cache_classes ? require(c) : load(c)
    end
    Dir.glob(root.join path, "**/*.deface") do |c|
      Rails.application.config.cache_classes ? require(c) : Deface::DSL::Loader.load(c)
    end
  end
end
load_overrides(railtie) click to toggle source
# File lib/deface/environment.rb, line 76
def load_overrides(railtie)
  Override.current_railtie = railtie.class.to_s
  paths = railtie.respond_to?(:paths) ? railtie.paths["app/overrides"] : nil
  enumerate_and_load(paths, railtie.root)
end