saw*_*awa 6 ruby load module class
我有一个外部文件:path_to_external_file.rb有一些类定义:
class A
some_definitions
end
Run Code Online (Sandbox Code Playgroud)
我想在模块中加载它,B以便A可以将上面定义的类称为B::A.我试过了:
class B
load('path_to_external_file.rb')
end
Run Code Online (Sandbox Code Playgroud)
但是A在主要环境中定义,而不是在B:
A #=> A
B.constants # => []
Run Code Online (Sandbox Code Playgroud)
如何在某个类/模块中加载外部文件?
编辑
我应该将外部文件作为字符串读取,并在其中评估它们Class.new{...},并include在该类中B?
你不能。至少使用loador require,Ruby 文件将始终在顶级上下文中进行评估。
您可以通过两种方式解决该问题:
class B::A(但你可能试图避免这种情况)eval(File.read("path_to_external_file.rb"))内使用B编辑:也许,这个库对你来说很有趣:https ://github.com/dreamcat4/script/blob/master/intro.txt