module ActiveSupport::Dependencies

def require_or_load(file_name, const_path = nil)

def require_or_load(file_name, const_path = nil)
  log_call file_name, const_path
  file_name = $` if file_name =~ /\.rb\z/
  expanded = File.expand_path(file_name)
  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
  begin
    if load?
      log "loading #{file_name}"
      # 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 or history.include?(expanded)
        result = load_file(*load_args)
      else
        enable_warnings { result = load_file(*load_args) }
      end
    else
      log "requiring #{file_name}"
      result = require file_name
    end
  rescue Exception
    loaded.delete expanded
    raise
  end
  # Record history *after* loading so first load gets warnings.
  history << expanded
  result
end