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

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

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