Вы можете одновременно загружать только один уровень модуля, поэтому вам нужно ввести промежуточный файл.
То, как я заставил это работать, было путем введения файла с именем lib/my_gem/dym.rb
, который автоматически загружает близость:
# console.rb
require_relative 'lib/my_gem'
# lib/my_gem.rb
module MyGem
autoload :Dym, "./lib/my_gem/dym.rb"
puts "The Dym::Proximity module isn't yet loaded!"
Dym::Proximity
puts "The Dym::Proximity module has been successfully loaded!"
end
# lib/my_gem/dym.rb
module MyGem
module Dym
autoload :Proximity, "./lib/my_gem/dym/proximity.rb"
end
end
# lib/my_gem/dym/proximity.rb
module MyGem
module Dym
class Proximity
puts 'Dym::Proximity module is loading!'
end
end
end
Со следующими файлами я получаюследующий вывод:
ruby console.rb
The Dym::Proximity module isn't yet loaded!
Dym::Proximity module is loading!
The Dym::Proximity module has been successfully loaded!
Итак, вы видите, что даже если вам пришлось вводить промежуточный файл, вы можете использовать несколько уровней модулей, и они будут каскадно и автоматически загружаться.