主頁 > 知識(shí)庫 > Ruby實(shí)現(xiàn)命令行中查看函數(shù)源碼的方法

Ruby實(shí)現(xiàn)命令行中查看函數(shù)源碼的方法

熱門標(biāo)簽:天津外呼系統(tǒng)怎么收費(fèi) 外呼線路從哪里出來的 AI電銷機(jī)器人 線路 漯河電銷 征服者企業(yè)地圖標(biāo)注 淮安自動(dòng)外呼系統(tǒng)供應(yīng)商 中牟外呼系統(tǒng)違法嗎 巫師3地圖標(biāo)注魔力之所 柯城手機(jī)地圖如何做地圖標(biāo)注

如果要查看 ActiveRecord 的 update_attribute 函數(shù)的源代碼,一個(gè)比較常見的方法是直接在 Rails 源碼中搜索 def update_attribute。博客 The Pragmatic Studio 介紹了一個(gè)更方便的技巧,在 Ruby 命令行中就能啟動(dòng)編輯器直接訪問。

通過 Object#method 方法可以獲得 update_attribute 方法的對(duì)象,而 Method#source_location 則返回這個(gè)方法定義的文件和位置。有了這個(gè)信息后,就能啟動(dòng)編輯器查看源代碼了:

復(fù)制代碼 代碼如下:

> method = User.first.method(:update_attribute)
  User Load (0.5ms)  SELECT `users`.* FROM `users` LIMIT 1
=> #Method: User(ActiveRecord::Persistence)#update_attribute>

> location = method.source_location
=> ["/Users/wyx/.rvm/gems/ruby-1.9.2-p180/gems/activerecord-3.2.11/lib/active_record/persistence.rb",
 177]

> `subl #{location[0]}:#{location[1]}`
=> ""

把這段代碼封裝成函數(shù),加到 .pryrc 或者 .irbrc 中:

復(fù)制代碼 代碼如下:

def source_for(object, method)
  location = object.method(method).source_location
  `subl #{location[0]}:#{location[1]}` if location location[0] != '(eval)'
  location
end

如果要查看 User 的實(shí)例方法 update_attribute,可以直接在 pry / irb 中調(diào)用

復(fù)制代碼 代碼如下:

source_for(User.first, :update_attribute)

如果要使用其他編輯器,得把 subl #{location[0]}:#{location[1]} 換成這個(gè)編輯器對(duì)應(yīng)的命令行:

復(fù)制代碼 代碼如下:

# TextMate
mate #{location[0]} -l #{location[1]}

# MacVim
mvim #{location[0]} +#{location[1]}

# Emacs
emacs {location[0]} +#{location[1]}

您可能感興趣的文章:
  • Ruby中的方法(函數(shù))學(xué)習(xí)總結(jié)
  • Ruby中常用的字符串處理函數(shù)使用實(shí)例
  • ruby中的雙等號(hào)==問題詳解
  • Ruby里4種比較函數(shù)(equal?, eql?, ==, ===)詳解

標(biāo)簽:內(nèi)江 甘孜 大慶 棗莊 克拉瑪依 河池 西雙版納 南昌

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Ruby實(shí)現(xiàn)命令行中查看函數(shù)源碼的方法》,本文關(guān)鍵詞  Ruby,實(shí)現(xiàn),命令,行中,查看,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Ruby實(shí)現(xiàn)命令行中查看函數(shù)源碼的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于Ruby實(shí)現(xiàn)命令行中查看函數(shù)源碼的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章