module Rubinjam::ModuleAutoloadFix

Public Class Methods

included(base) click to toggle source
# File lib/rubinjam/internal.rb, line 40
def self.included(base)
  base.class_eval do
    def rubinjam_autload
      @rubinjam_autload ||= {}
    end

    alias autoload_without_rubinjam autoload
    def autoload(const, file)
      normalized_file = Rubinjam.normalize_file(file)
      if Rubinjam::LIBRARIES[normalized_file]
        rubinjam_autload[const] = normalized_file
      else
        autoload_without_rubinjam(const, file)
      end
    end

    alias const_missing_without_rubinjam const_missing
    def const_missing(const)
      # do not load twice / go into infitire loops
      @rubinjam_tried_const_missing ||= {}
      if @rubinjam_tried_const_missing[const]
        return const_missing_without_rubinjam(const)
      end
      @rubinjam_tried_const_missing[const] = true

      # try to find autoload in current module or nesting
      nesting, file = Rubinjam.file_from_nesting(self, const)
      if file
        require file
        nesting.const_get(const)
      else
        const_missing_without_rubinjam(const)
      end
    end
  end
end

Public Instance Methods

autoload(const, file) click to toggle source
# File lib/rubinjam/internal.rb, line 47
def autoload(const, file)
  normalized_file = Rubinjam.normalize_file(file)
  if Rubinjam::LIBRARIES[normalized_file]
    rubinjam_autload[const] = normalized_file
  else
    autoload_without_rubinjam(const, file)
  end
end
const_missing(const) click to toggle source
# File lib/rubinjam/internal.rb, line 57
def const_missing(const)
  # do not load twice / go into infitire loops
  @rubinjam_tried_const_missing ||= {}
  if @rubinjam_tried_const_missing[const]
    return const_missing_without_rubinjam(const)
  end
  @rubinjam_tried_const_missing[const] = true

  # try to find autoload in current module or nesting
  nesting, file = Rubinjam.file_from_nesting(self, const)
  if file
    require file
    nesting.const_get(const)
  else
    const_missing_without_rubinjam(const)
  end
end
rubinjam_autload() click to toggle source
# File lib/rubinjam/internal.rb, line 42
def rubinjam_autload
  @rubinjam_autload ||= {}
end