0

我试图避免向 ruby​​'s 添加冗余路径LOAD_PATH。这不是一项非常复杂的任务,我只是想知道是否有比我想出的更清洁的方法。

这是我目前的解决方案:

def add_loadpath(new_path)
  included = $LOAD_PATH.inject(false) do |acc,path|
    acc || new_path == File.expand_path(path)
  end
  $LOAD_PATH.unshift new_path unless included
end

$LOAD_PATH.unshift SOME_PATH然后,您不会像往常一样打电话
add_loadpath SOME_PATH

这是为了避免在加载路径包含两个指向同一个文件夹但不是同一个字符串的路径时出现问题。例如foo/../barbar

4

1 回答 1

0

我相信所有的路径$LOAD_PATH都已经扩展了,所以File.expand_path(path)毫无意义。您的代码可以重构为:

def add_loadpath(new_path)
  File.expand_path(new_path)
  .tap{|new_path| $LOAD_PATH.unshift(new_path) unless $LOAD_PATH.include?(new_path)}
end

或者

def add_loadpath(new_path)
  $LOAD_PATH.unshift(File.expand_path(new_path)).uniq!
end
于 2013-02-10T06:51:46.647 回答