Method: #require_relative

Defined in:
lib/wedge/require.rb

#require_relative(name) ⇒ Object

rewrite require_relative



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/wedge/require.rb', line 19

def require_relative(name)
  caller_str       = "#{caller[0]}".gsub(/:.+$/, '').gsub(/\.rb$/, '')
  caller_path_name = caller_str.gsub(%r{(#{Dir.pwd}/|.*wedge)}, '').gsub(/:.+$/, '').gsub(/^\//, '')

  path_name = caller_path_name.gsub(/(?<=\/)([^\/]*)$/, "#{name}")
  path_name = File.expand_path(path_name).sub("#{Dir.pwd}/", '') if path_name['..']
  path_name = path_name.gsub(/\//, '__')
  file      = caller_str.gsub(/(?<=\/)([^\/]*)$/, "#{name}")
  caller_path_name = caller_path_name.gsub(/\//, '__')

  if !caller_path_name['.'] && !(Wedge.config.requires[caller_path_name] ||= []).include?(path_name)
    Wedge.config.requires[caller_path_name] << path_name
  end

  Kernel.require file
end