Guest User

Untitled

a guest
Jun 19th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.84 KB | None | 0 0
  1. # force_require.rb
  2. #
  3. # == Usage
  4. #
  5. # require 'bundler/setup'
  6. # require './force_require'
  7. #
  8. # force_require 'g'
  9. # g 'foo'
  10. #
  11. # require 'g' # => LoadError
  12. #
  13. module Kernel
  14. def new_require(name)
  15. begin
  16. org_require name
  17. rescue LoadError
  18. if Thread.current[:force_require_mode]
  19. force_require name
  20. else
  21. raise
  22. end
  23. end
  24. end
  25. alias_method :org_require, :require
  26. alias_method :require, :new_require
  27.  
  28. def force_require(name)
  29. Thread.current[:force_require_mode] = true
  30. Gem.all_load_paths.each do |dir|
  31. Dir[File.join(dir, "#{name}#{Gem.suffix_pattern}")].each do |file|
  32. require file
  33. return true
  34. end
  35. end
  36. raise LoadError, "no such file to load -- #{name}"
  37. ensure
  38. Thread.current[:force_require_mode] = false
  39. end
  40. alias_method :require!, :force_require
  41. end
Add Comment
Please, Sign In to add comment