国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Ruby > 正文

Ruby實現命令行中查看函數源碼的方法

2020-02-24 15:30:06
字體:
來源:轉載
供稿:網友

函數可以在優雅的Ruby中實現,而且函數運用好,可以讓開發的項目變得栩栩如生,那么在開始之前,武林技術頻道小編就為大家介紹Ruby實現命令行中查看函數源碼的方法。

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

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

?

復制代碼 代碼如下:

> 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]}`
=> ""

?

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

復制代碼 代碼如下:

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

?

如果要查看 User 的實例方法 update_attribute,可以直接在 pry / irb 中調用

復制代碼 代碼如下:

source_for(User.first, :update_attribute)

?

如果要使用其他編輯器,得把 subl #{location[0]}:#{location[1]} 換成這個編輯器對應的命令行:

復制代碼 代碼如下:

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

?

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

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

看了武林技術頻道介紹的Ruby實現命令行中查看函數源碼的方法,想必大家已經知道怎么操作了吧,現在很多開發項目的時候也有會有所應用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 阿勒泰市| 青川县| 潢川县| 施秉县| 托里县| 越西县| 宿松县| 泸溪县| 日喀则市| 东丰县| 华阴市| 宣武区| 柳河县| 资阳市| 随州市| 长子县| 周宁县| 丹巴县| 石台县| 永宁县| 巩留县| 广州市| 临泽县| 宁海县| 永德县| 甘德县| 满洲里市| 乾安县| 姜堰市| 钟祥市| 平南县| 沙洋县| 武邑县| 正定县| 松桃| 蕲春县| 阿拉善盟| 安乡县| 万载县| 九龙县| 綦江县|