為什么Ruby 1.9.2從LOAD_PATH中刪除“?!?,還有什么替代方案?Ruby 1.9.2的最新變更集不再使當(dāng)前目錄.成為您的目錄LOAD_PATH。我有一些非常重要的Rakefiles假設(shè)它.是其中的一部分LOAD_PATH,所以這打破了它們(他們報(bào)告“沒有這樣的文件加載”所有基于項(xiàng)目路徑的require語句)。這樣做有什么特別的理由嗎?至于一個(gè)修復(fù),添加$: << "."到處都有效,但看起來非常hacky,我不想這樣做。使Rakefiles 1.9.2+兼容的首選方法是什么?
3 回答

達(dá)令說
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超6個(gè)贊
這被視為“安全”風(fēng)險(xiǎn)。
您可以使用絕對(duì)路徑繞過它
File.expand_path(__FILE__) et al
或做
require './filename' (ironically).
或者通過使用
require_relative 'filename'
或添加“包含”目錄
ruby -I . ...
或者相同,使用irb;
$irb -I .

紅糖糍粑
TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
正如其他人的回答指出的那樣,這是一個(gè)安全風(fēng)險(xiǎn),因?yàn)?code>.在您的加載路徑中引用了當(dāng)前的工作目錄Dir.pwd
,而不是當(dāng)前正在加載的文件的目錄。因此,無論誰執(zhí)行您的腳本,只需通過cd
另一個(gè)目錄即可更改。不好!
我一直在使用構(gòu)建的完整路徑__FILE__
作為替代方案。
require File.expand_path(File.join(File.dirname(__FILE__), 'filename'))
與require_relative
此不同,這與Ruby 1.8.7向后兼容。
- 3 回答
- 0 關(guān)注
- 700 瀏覽
添加回答
舉報(bào)
0/150
提交
取消