module ActiveSupport::Dependencies

def require_or_load(file_name, const_path = nil)

def require_or_load(file_name, const_path = nil)
  file_name = file_name.chomp(".rb")
  expanded = File.expand_path(file_name)
  return if loaded.include?(expanded)
  Dependencies.load_interlock do
    # Maybe it got loaded while we were waiting for our lock:
    return if loaded.include?(expanded)
    # Record that we've seen this file *before* loading it to avoid an
    # infinite loop with mutual dependencies.
    loaded << expanded
    loading << expanded
    begin
      if load?
        # Enable warnings if this file has not been loaded before and
        # warnings_on_first_load is set.
        load_args = ["#{file_name}.rb"]
        load_args << const_path unless const_path.nil?
        if !warnings_on_first_load || history.include?(expanded)
          result = load_file(*load_args)
        else
          enable_warnings { result = load_file(*load_args) }
        end
      else
        result = require file_name
      end
    rescue Exception
      loaded.delete expanded
      raise
    ensure
      loading.pop
    end
    # Record history *after* loading so first load gets warnings.
    history << expanded
    result
  end
end