ruby--$:.unshift File.expand_path('..', __FILE__)


一直能看到一些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就會先從當前目錄下去查找了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM