2011-03-04 61 views
0

我正在嘗試track down a bug caused by the intersection of MRI 1.8.7 and libxml-1.1.3,我需要在Ruby解釋器本身的代碼庫中進行一些探索。 SVN browser是有用的;我真正喜歡的是使用LXR,它可以超鏈接C代碼庫以便輕鬆導航,例如http://lxr.linux.no/perl+perl-5.10.1/utf8.c用於Ruby解釋器的LXR?

我當然可以設置LXR我的機器上,但沒有人知道,如果有一個公共LXR的Ruby在那裏?谷歌是不是很有幫助:http://www.google.com/search?ie=UTF-8&q=lxr+ruby

回答

1

我還沒有發現MRI公共LXR,所以我成立了一個在我的機器上。以下是如何做到這一點在Ubuntu 10.10:

: [email protected]; cat /etc/issue 
Ubuntu 10.10 \n \l 
: [email protected]; sudo aptitude install apache2 lxr 
: [email protected]; sudo vim /etc/apache2/sites-available/default 
: [email protected]; tail -6 /etc/apache2/sites-available/default 
Alias /lxr /usr/share/lxr 

Options All 
AllowOverride All 

: [email protected]; sudo vim /usr/share/lxr/http/.htaccess 
: [email protected]; sudo cat /usr/share/lxr/http/.htaccess 

SetHandler cgi-script 

: [email protected]; sudo mkdir -p /usr/share/lxr/source/1.8.7-p334 
: [email protected]; cd /usr/share/lxr/source/1.8.7-p334 
: [email protected]; sudo tar xvjf /tmp/ruby-1.8.7.tar.bz2 
: [email protected]; sudo mv ruby-1.8.7 ruby 
: [email protected]; sudo vim /usr/share/lxr/source/versions 
: [email protected]; sudo cat /usr/share/lxr/source/versions 
1.8.7-p334 
: [email protected]; sudo ln -s /usr/share/lxr/source/1.8.7-p334 /usr/share/lxr/source/defversion 
: [email protected]; sudo genxref ruby 
Starting pass 1: Collect identifier definitions. 
(Pass 1) vms/vmsruby_private.c (993), file 1 of 262… 
[...] 
(Pass 3) identifier 8200 of maximum 17136… 
(Pass 3) identifier 8300 of maximum 17136… 
Completed pass 3 (0s):Information on 8316 identifiers dumped to disk. 
: [email protected]; sudo chmod -R o+r . 
: [email protected]; sudo vim /usr/share/lxr/http/lxr.conf 
: [email protected]; sudo cat /usr/share/lxr/http/lxr.conf 
# Configuration file. 
# [...] 
# The source is here. 
sourceroot: /usr/share/lxr/source/$v/ruby/ 
srcrootname: Ruby 
# [...] 
0

它不是LXR,但我最近做了很多,發現Understand非常有幫助。它會讓你點擊任何符號並進入定義/聲明,並進行簡單的調用圖表和其他靜態分析。我只是希望它也支持Ruby源代碼。

另一方面,如果你可以遷移到Nokogiri,libxml仍然無法破解,它會爲你節省很多的痛苦。他們的API非常相似。

+0

謝謝,肖恩。我會看看Nokogiri。我們確實找到了解決libxml/Ruby bug的方法。我可能會修補它 - 主要是因爲我喜歡gdb。 ;) – 2011-03-06 10:18:50