module RequireFile

Handle requiring files

Public Class Methods

require(files, total = nil) click to toggle source
# File lib/require_smasher/require_file.rb, line 7
def require(files, total = nil)
  raise FileNotInformedError if files.empty?

  results = require_files(files)
  results.select! { |r| r[:error] }
  return if results.empty?
  raise RequireFileError, (results.map { |result| result[:message] }) if total == results.count

  require(results.map { |result| result[:file] }, results.count)
end
require_directories(directories) click to toggle source
# File lib/require_smasher/require_file.rb, line 18
def require_directories(directories)
  raise DirNotInformedError if directories.empty?

  require(FileSmasher.files(directories))
end

Private Class Methods

require_files(files) click to toggle source
# File lib/require_smasher/require_file.rb, line 26
def require_files(files)
  files.uniq.map do |file|
    require_relative File.expand_path("./#{file}")
    { file: file, error: false, message: nil }
  rescue LoadError, StandardError => e
    { file: file, error: true, message: "Error while requiring file #{file}: #{e.message}" }
  end
end