【发布时间】:2012-01-19 17:41:36
【问题描述】:
我想通过遍历目录结构来动态加载代码并动态加载我在那里找到的任何模块。
这样做的目的是运行一系列验证。如果顶级验证失败,则不会运行任何子验证。
我的想法是控制器对象可以扫描目录,构建模块层次结构,然后根据更高级别验证的成功/失败决定是否遍历树的特定部分。
例如,我可能想要针对正则表达式运行一系列验证,但是,如果正则表达式不存在或为空,则不应运行任何验证。在这种情况下,顶级目录将仅包含 exists 验证,如果存在正则表达式,子目录将包含要运行的所有其他验证。
能够在单独的文件中定义这些验证并创建所需的层次结构对于以后轻松添加其他验证非常有用,而不必打开现有类并添加方法。
有没有一种方法可以让应用程序动态扫描目录,将文件名保存在集合中,然后在 require 中使用该集合的元素?我不这么认为。负载呢?
有没有办法实现这样的设计?还是我认为这一切都错了,应该考虑其他方法?
【问题讨论】:
-
我不确定您的真正目标是什么。这听起来更像是一个验证链,而不是与动态模块加载有关的任何事情;无论验证集合的成功/失败,验证方法都可以存在。
标签: ruby-on-rails ruby