在宝石中,我有一个文件
state
我正在尝试使用
自动加载components/LoaList/__tests__/loaList.test.js
这会导致错误
prop
或者我也尝试过
#/lib/my_gem/dym/proximity.rb
module MyGem
module Dym
class Proximity
end
end
end
给出
module MyGem
autoload 'Dym::Proximity', "my_gem/dym/proximity"
end
并且在任何情况下,NameError: autoload must be constant name: Dym::Proximity
都不是格式正确的符号。
我该怎么做?
答案 0 :(得分:4)
您一次只能自动加载一个模块级别,因此您需要引入一个中间文件。
让我工作的方法是引入一个名为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!
因此,即使您必须引入一个中间文件,您仍然可以使用多个模块级别,它们将级联并自动加载。