我注意到,在创建插件时,如果我在插件中添加一个 lib 文件夹并在其中放置一些文件,我就可以使用 require,因为这些文件的路径已被添加到 $LOAD_PATH 中。
例如,docker_manager 插件包含一个 lib/docker_manager/git_repo.rb 文件。在运行 Rails 控制台 rails c 后,我可以执行 require 'docker_manager/git_repo'。
我很好奇 Discourse 是如何使所有这些路径可用的?
我注意到,在文件 /lib/plugin/instance.rb 中,如果我注释掉第 671 行 self.instance_eval File.read(path), path,那么 require 将无法工作。然而,我不理解 instance_eval 是如何将目录添加到 load_path 的。