2015-09-16 53 views
0

當我讀RbConfig::CONFIG['libdir']時,它給了我lib文件夾的位置。但在rbconfig.rb文件中CONFIG["libdir"] = "$(exec_prefix)/lib"。這裏的價值是如何解釋的。

+1

括號中的問題標題和正文不要馬克。哪裏是正確的? –

+0

對不起@AlexeyShein。我更新了這個問題。 – Vijay

回答

6

$(exec_prefix)是指RbConfig::CONFIG中的一個鍵。

但這不是Ruby功能。 rbconfig.rb包含code to expand these values:中$(key)每次出現被替換的RbConfig::CONFIG['key']

rbconfig.rb相應的值包含這些行:

CONFIG["prefix"]  = (TOPDIR || DESTDIR + "/Users/sos/.rubies/ruby-2.2.2") 
CONFIG["exec_prefix"] = "$(prefix)" 
CONFIG["libdir"]  = "$(exec_prefix)/lib" 

及其值:

RbConfig::CONFIG["prefix"]  #=> "/Users/sos/.rubies/ruby-2.2.2" 
RbConfig::CONFIG["exec_prefix"] #=> "/Users/sos/.rubies/ruby-2.2.2" 
RbConfig::CONFIG["libdir"]  #=> "/Users/sos/.rubies/ruby-2.2.2/lib" 
+0

很好的答案!我已經刪除了我的答案,因爲你的答案顯然更正確。 –

+0

你能澄清這一點嗎?從這些值被加載到$(key) – Vijay

+2

@Vijay與任何迷你模板的工作方式相同 - 鏈接Stefan提供*完全*顯示它的工作原理。 –