我正在为一个复杂项目的一堆Rake任务做一些技巧,逐步重构一些复杂的块。这暴露了前一个项目维护人留下的奇怪的依赖关系网。
我希望能够做的是在项目中添加一个特定的路径到require
的待搜索路径列表,即$:
。但是,我只希望在的一个特定方法的环境中搜索该路径。现在我正在做这样的事情:
def foo()
# Look up old paths, add new special path.
paths = $:
$: << special_path
# Do work ...
bar()
baz()
quux()
# Reset.
$:.clear
$: << paths
end
def bar()
require '...' # If called from within foo(), will also search special_path.
...
end
这显然是一个可怕的黑客。有没有更好的办法?
尽管有额外的代码,但它好得多比不得不使用全局变量。 – 2010-04-25 18:54:39