我使用模块作为命名空间,并希望用类动态填充它们,例如:
module Module1
# ...
end
module Module2
# ...
end
[Module1, Module2].each do |the_module|
the_module.module_eval do
class ApiTest < ActiveSupport::TestCase
# ...
end
end
end
module_eval
可以工作,只是它不会改变嵌套,保留外部嵌套。因此,所包含的常量不会嵌套在模块中。
最初的动机是为每个包含在其自己模块中的不同 API 实现生成相同测试。
最佳答案
这是另一个选项(注意“self::”)
module Module1
# ...
end
module Module2
# ...
end
[Module1, Module2].each do |the_module|
the_module.module_eval do
class self::ApiTest < ActiveSupport::TestCase
# ...
end
end
end
关于ruby - 如何动态更改 Ruby 中的嵌套?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9438442/