一直能看到一些gem里面會有這樣一句代碼:
$:.unshift File.expand_path('..', __FILE__)
這句話是干什么用的呢
$:就是ruby的一個全局變量,也叫$LOAD_PATH,功能就是java中的classpath,用來加載類庫的,當你require某個文件時,ruby就會從這個變量的值去查找,找不到會報LoadError。這個值其實就是一個包含了類庫絕對路徑的數組。
__FILE__這個變量代表文件自己的文件名,在foo.rb中puts__FILE__,結果就是foo.rb。
File.expand_path可以把路徑轉換成絕對路徑,假設有這樣一個文件/Users/kenshin/foo.rb,里面有File.expand_path('..', __FILE__),返回的結果就是/Users/kenshin。
unshift是數組的一個方法,功能就是把指定的值加到數組的最前面,[3,4].unshift(1,2) => [1,2,3,4]
所以這段代碼的意思就是把當前文件所在的目錄加到ruby的loadpath的最前面,在require文件時,ruby就會先從當前目錄下去查找了。
