麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Ruby > 正文

使用Eclipse+RDT插件進行Ruby開發(fā)

2024-07-21 02:14:42
字體:
供稿:網(wǎng)友

  簡介 本文介紹如何在eclipse中使用ruby開發(fā)工具(rdt)插件進行ruby開發(fā)。本文將有益于那些想學(xué)習(xí)如何使用eclipse基礎(chǔ)架構(gòu)來進行ruby開發(fā)的ruby開發(fā)者,也有益于對ruby開發(fā)感興趣的java開發(fā)者。

  一、 為什么使用ruby?

  現(xiàn)在,為什么眾多的java開發(fā)者都關(guān)注ruby?ruby,是10年以前在日本創(chuàng)建的一種通用目的腳本語言,這是一種純面向?qū)ο蟮恼Z言。不同于java技術(shù),ruby中的一切都是對象。ruby的語法主要來源于smalltalk,python和ada。象java編程語言一樣,ruby是一種單繼承的語言,但是它提供了一些java技術(shù)所沒有實現(xiàn)的高級特征,例如閉合(可以認為是一種匿名的內(nèi)部類)和mix-in(類似于接口,但是較松地綁定于類上)。ruby也是高度可移植的,能夠運行在所有主流的操作系統(tǒng)之上。

  現(xiàn)在,ruby正十分熱門。人們正在開始把它應(yīng)用于各種類型的應(yīng)用程序。因為它是解釋型并且使用動態(tài)類型化,所以你可以在運行時刻實現(xiàn)在java中很難實現(xiàn)的技巧。由動態(tài)類型化和富于表達的語法所實現(xiàn)的令人吃驚的能力之一是它能夠用ruby創(chuàng)建域特定的語言(dsl)-它們允許你在更高級別的抽象層上工作,從而遠離最原始的語言語法。ruby on rails是一種創(chuàng)建基于數(shù)據(jù)庫支持的web應(yīng)用程序的框架,這也展示了ruby的力量。rake,作為ruby的make和ant合二為一的版本,是這種語言強有力的應(yīng)用的又一個證明。

  使用ruby的另一個原因是,所有的編程發(fā)燒友都在使用它。現(xiàn)在,許多java高手(如glenn vanderburg,bruce tate和martin fowler)都在使用ruby。即使你不打算把你的所有開發(fā)轉(zhuǎn)向ruby,這種語言也值得你瀏覽一番。

  限制ruby發(fā)展的主要因素之一是,它缺乏一個良好的開發(fā)環(huán)境(對于那些不想學(xué)習(xí)emacs的用戶來說)。如今,rdt改變了這一切,而使用eclipse對此進行試驗則最好不過。

  二、 安裝

  在使用ruby之前,你必須安裝ruby解釋器,相應(yīng)的庫和ruby開發(fā)環(huán)境。

  三、 取得ruby

  ruby可用于所有主要的平臺上。事實上,你的linux或cygwin分發(fā)包中可能已經(jīng)包含了它。請打開一個命令提示符,然后輸入"ruby-v"。
如果你得到一個版本號,那么你已經(jīng)準備好。否則,你需要檢查你所選擇的平臺的分發(fā)包。

  如果你正在運行windows,則選擇更容易。rubyforge,作為sourceforge上的ruby特定的等價物,有一個工程稱為one-click ruby installer,這個程序用于在windows平臺上搭建ruby環(huán)境。它還包括另外一些工具,如一個稱為freeride的ide;但是如果你使用rdt的話,你在安裝過程中可以跳過這些這項。

  四、 取得文檔

  當你開始使用一種新語言時,文檔及有關(guān)參考材料是至關(guān)重要的。你可以在主ruby網(wǎng)站得到ruby文檔的在線參考材料,但是你會發(fā)現(xiàn)這些文檔有點過時(它們是針對于ruby 1.6版本的,而當前版本是1.8.2)。問題是,更新的文檔目前還沒有從日語翻譯過來。然而,你可以在ruby-doc.org上找到最新的幫助文檔。它包括api級的文檔(javadoc的等價物),還有其它一些教程和書籍。

  如果你是一位嚴肅的ruby開發(fā)者,那么你應(yīng)該閱讀一下《programming ruby:the pragmatic programmer's guide》(作者是dave thomas和andy hunt)一書以取得最佳編程效果。這是一本有關(guān)ruby及ruby庫編程的經(jīng)典指南。如果你得到此書,那么你還可以參考也是dave thomas編寫的《agile development with ruby on rails》一書。這是一本有關(guān)ruby on rails的入門性書籍。

  五、 得到rdt

  現(xiàn)在,既然你在自己的計算機上安裝了一個可工作的具有良好幫助文檔的ruby,那么接下來你需要安裝rdt了。這是一個eclipse插件,它提供了許多你可能在編輯代碼時已習(xí)慣的特征。rdt是一個標準的eclipse插件;因此,你可以直接把壓縮文件解壓到eclipse文件夾下,由文檔中的路徑來處理其它一切。

  現(xiàn)在,你已經(jīng)準備好創(chuàng)建一個ruby工程了(見圖1)。


圖1.創(chuàng)建一個新的ruby工程

  與java相比,ruby在命名和目錄結(jié)構(gòu)方面要求并不嚴格。在ruby中創(chuàng)建一個工程實際上只創(chuàng)建一個目錄和一個工程文件(不需要.classpath文件,因為ruby沒有classpath)。另外一個與java技術(shù)的顯著區(qū)別是,ruby工程向?qū)Р⒉粍?chuàng)建顯式的src和bin目錄。ruby是解釋型的,因此沒有輸出文件夾。如果你有一個小工程,那么你可以把ruby源文件放在與工程文件相同的文件夾下。作為選擇,你還可以創(chuàng)建你自己的目錄層次。你會發(fā)現(xiàn),與java相比,ruby很少關(guān)心這些。

  接下來,你將創(chuàng)建一個ruby源文件。沒有特定的向?qū)в糜趧?chuàng)建一個ruby源文件。與java技術(shù)相比,ruby源文件中僅需要較少的結(jié)構(gòu),所以,為了創(chuàng)建一個ruby文件,你需要右擊工程來創(chuàng)建一個新文件(見下圖2)。


圖2.創(chuàng)建一個ruby源文件

  別忘記把標準擴展名.rb添加到該文件(它是正常的ruby擴展名)。創(chuàng)建一個ruby文件應(yīng)該會打開如圖3所示的ruby視圖。


圖3.創(chuàng)建一個ruby文件將啟動ruby視圖

  ruby還提供了一個outline視圖(類似于java提供的那種)。就象它的java對應(yīng)物一樣,它允許你在ruby源文件的元素之間進行導(dǎo)航。在圖4中,raise_salary_by方法在outline和源碼視圖中都被加亮。


圖4.這個outline視圖實現(xiàn)在源文件中的導(dǎo)航

  就象其它復(fù)雜的插件一樣,rdt也允許通過"window>preferences"對話框增加定制特征。這個定制對話框見圖5。


圖5.rdt安裝"preferences"以便實現(xiàn)定制

  參數(shù)選擇"preferences"菜單項允許你改變語法加亮,格式化(ruby世界中的標準縮進是兩個空格,而不是四個空格,所以請準備好作一些調(diào)整),等等。它還允許你定制編輯器模板并選擇你自己的解釋器。

  六、 rdt編輯器

  在java世界中,我們已習(xí)慣于高級編輯器特征-這使得在轉(zhuǎn)到其它不提供同樣支持的其它環(huán)境時比較困難。ruby ide中所缺乏的特征之一是沒有提供內(nèi)容助手(它能夠提供上下文相關(guān)的標識符查找功能)。幸好,rdt編輯器中含有針對ruby代碼的內(nèi)容助手,見下圖6。


圖6.rdt編輯器提供了內(nèi)容助手

  在ruby中,你不能把一種類型賦值給一個變量或一個方法的返回,而由標識符上下文確定在運行時刻的類型。ruby中引入了一種被親切地稱為"duck typing"的方法。這種方法的思想是,如果它接受一個假(quack)消息,那么它必須是一個"duck"。這看起來似乎妨礙了那些已經(jīng)習(xí)慣了強類型化語言的用戶,這種松散類型耦合能夠支持ruby語言中一些更強有力的特征。例如,你可以用ruby編寫一個異常處理器-當你調(diào)用一個并不存在的方法時激活它,然后由該異常處理處理器來自由分析這個方法,然后再調(diào)用它。這種元編程級在強類型化語言中是很難實現(xiàn)的。

  針對內(nèi)容助手的一個挽回特征是,ruby在使用標識符時使用特定的命名慣例。例如,在ruby中,所有的成員變量在第一次使用它們時就存在,并且全部由一個@符號所標識,作為其名字的第一個字符。如果你使用內(nèi)容助手查找成員變量,那么你可以輸入@,這樣以來你就只能看見成員變量了。


圖7.在ruby幫助內(nèi)容助手中的命名慣例

  動態(tài)類型化仍然妨礙在ruby中的上下文敏感問題。在圖7中,唯一有效的成員變量是正好出現(xiàn)在方法聲明上面的那些,也就是@name,@salary和@hire_year。內(nèi)容助手所提供的另外一些成員來自于另一個類(后面定義)。目前,rdt編輯器還不足夠復(fù)雜以過濾所有的正確語法但語義上不正確的入口。

  七、 運行與調(diào)試

  ide的特色之一是在同一個環(huán)境下運行和調(diào)試你構(gòu)建的應(yīng)用程序。rdt能夠啟用這兩項功能。

  八、 指定一個解釋器

  這一任務(wù)的實現(xiàn)位于ruby上部和"installed interpreters"入口的"windows>preferences"對話框中。
ruby是一種解釋性的語言,因此,在rdt能夠運行或調(diào)試你的應(yīng)用程序之前,你必須把一個解釋器與你的環(huán)境關(guān)聯(lián)。這種關(guān)聯(lián)位于ruby頂部的"windows>preferences"對話框中的"installed interpreters"入口處。


圖8.把一個ruby解釋器與環(huán)境相關(guān)聯(lián)

  對于你正在使用的ruby版本,你要把"location"文本域指向bin目錄,之后由rdt來選取所有其它所需要的信息。一旦你關(guān)聯(lián)了解釋器,那么你就為運行應(yīng)用程序作好了準備。

  九、 運行ruby應(yīng)用程序

  運行一個ruby應(yīng)用程序?qū)嶋H上類似于運行一個java應(yīng)用程序。你可以使用run菜單來創(chuàng)建一個run配置,見下圖9。


圖9.在rdt中建立一個run配置

  當你運行應(yīng)用程序時,rdt將把控制切換到ruby解釋器,然后在eclipse工作區(qū)底部的控制臺窗口內(nèi)運行應(yīng)用程序,見下圖10。


圖10.在rdt內(nèi)運行一個ruby應(yīng)用程序

  這個實例顯示了運行一個控制臺應(yīng)用程序,但是運行其它類型的應(yīng)用程序(如gui程序)的方式與此相同。

  十、 用rdt調(diào)試

  一個ide要求實現(xiàn)的最關(guān)鍵的特征之一是有效地調(diào)試你的應(yīng)用程序的能力。ruby解釋器包括一個命令行調(diào)試器,但是,在如今的圖形工具時代有誰會使用一個命令行調(diào)試器?幸好,ruby解釋器還通過一特定(可配置)端口來廣播其調(diào)試信息,而就象rdt這樣的工具能夠聽取該端口并且提供開發(fā)者們期望的調(diào)試支持類型。

  為了在rdt中調(diào)試一個ruby應(yīng)用程序,我們要象上面創(chuàng)建的run配置一樣創(chuàng)建一個debug配置。然后,你可以通過點擊左邊的溝槽設(shè)置一個斷點并使用調(diào)試器來啟動應(yīng)用程序。就象在java技術(shù)中一樣,ide將詢問你,是否你想要切換到調(diào)試視圖下。如果你愿意,則你將看見類似下面圖11所示的內(nèi)容:


圖11.在rdt中調(diào)試ruby應(yīng)用程序

  rdt中支持與java技術(shù)調(diào)試相同的調(diào)試級別。左上邊的格子顯示出當前執(zhí)行的線程,右上面的格子顯示出變量的值。就象在java編程語言中一樣,你可以進一步分析對象以觀看它們內(nèi)在的成員變量值。中間左邊的格子顯示當前正運行的應(yīng)用程序的源代碼,中間右邊的格子顯示outline視圖-它在這里擔(dān)當編輯器的作用,允許你通過點按一個標識符來進行導(dǎo)航。debug窗口的底部顯示出ruby解釋器在端口1098上廣播的調(diào)試信息,而由rdt在該端口上聽取調(diào)試信息。

  調(diào)試器支持是rdt的特色。就算你有一個具有優(yōu)秀的ruby支持的編輯器,你仍然必須依靠命令行調(diào)試器來調(diào)試你的應(yīng)用程序。擁有一個具有全面功能的調(diào)試器將會大大提高軟件的生產(chǎn)效率。

  十一、 測試

  作為java開發(fā)者最難實現(xiàn)的ruby特征之一是動態(tài)類型化。如果你習(xí)慣于一種強類型化語言,那么動態(tài)類型化看上去似乎有點混亂。dt允許各種高級元編程技巧-這在一種強類型化語言中是很難或不可能實現(xiàn)的。當然,你可以放棄編譯時刻類型檢查的安全設(shè)置。那么,是否有一個方法能夠?qū)崿F(xiàn)兩種世界的最佳結(jié)合呢?

  單元測試應(yīng)該是每一種語言必須實現(xiàn)的,但是它在動態(tài)語言中特別關(guān)鍵。單元測試比編譯揭示了更多的內(nèi)容。事實上,你應(yīng)該改變在單元測試和編譯之間的關(guān)系上的觀點。最近,一位高級軟件開發(fā)專家認為,"在今后的五年內(nèi),我們會把編譯作為單元測試的一種弱的實現(xiàn)形式"。單元測試能夠提供證實(verification)-編碼將如期實現(xiàn),而不是僅僅進行你輸入內(nèi)容的語法檢查。

  考慮到單元測試在ruby世界中的極端重要性,你一定會希望rdt能夠使得單元測試易于運行。的確如此!單元測試被包括在ruby內(nèi),因此你不必下載任何其它的擴展。ruby庫中包括了一個testcase類和一個testsuite的概念。你可以象創(chuàng)建任何另外的ruby類一樣來創(chuàng)建你的單元測試,從test::unit::testcase中子類化你的測試。列表1是一個employee類的實例。

  列表1.employee類

class employee
 def initialize(name, salary, hire_year)
  @name = name
  @salary = salary
  @hire_year = hire_year
 end
 attr_reader :name, :salary, :hire_year
 def raise_salary_by(perc)
  @salary += (@salary * (perc * 0.01))
 end
 def to_s
  "name is #{@name}, salary is #{@salary}, " + "hire year is #{@hire_year}"
 end
end

  相應(yīng)的單元測試如下:

  列表2.相應(yīng)于employee類的單元測試

require 'test/unit/testcase'
require 'test/unit/autorunner'
require 'hr'
class testemployee < test::unit::testcase
 @@test_salary = 2500
 def setup
  @emp = employee.new("homer", @@test_salary, 2003)
 end
 def test_raise_salary
  @emp.raise_salary_by(10)
  expected = (@@test_salary * 0.10) + @@test_salary
  assert( expected == @emp.salary)
 end
end

  為了運行這個單元測試,你可以為該單元測試類創(chuàng)建一個run配置-作為一個test::unit類型,見圖12。


圖12.rdt包括一個test::unit run配置

  當你運行這個測試時,你會得到與java單元測試相同的支持元素,包括在左下角的類junit格子。


圖13.運行于ide中的一個單元測試的例子

  你還可以在ruby中創(chuàng)建testsuites。testsuites是ruby類,它定義一個返回testsuite的suite方法。這個testsuite由自動地在每個testcases中定義的suite組成。列表3是針對幾個類的一個示例testsuite。

  列表3.一些類的示例testsuite

require 'test/unit/testsuite'
require 'test/unit/ui/tk/testrunner'
require 'test/unit/ui/console/testrunner'
require 'testemployee'
require 'testmanager'
class testsuite_alltests
 def self.suite
  suite = test::unit::testsuite.new("hr tests")
  suite << testemployee.suite
  suite << testmanager.suite
  return suite
 end
end
#test::unit::ui::tk::testrunner.run(testsuite_alltests)
test::unit::ui::console::testrunner.run(testsuite_alltests)

  不同于前面運行單個testcase的實例,這里的suite作為一獨立的應(yīng)用程序運行。ruby有兩個方法可以顯示testsuite的結(jié)果。第一個是"console test runner"-它在控制臺輸出它的結(jié)果。第二個是"tk testrunner",它創(chuàng)建一個熟悉的對話框來顯示測試的結(jié)果。圖14顯示了一個tk testsuite對話框。


圖14.圖形式的testsuite對話框

  十二、 新版本中的改進

  rdt的當前版本是0.50。目前,其開發(fā)者正在開發(fā)0.60版本。下一個版本中將改進的方面包括:

  · 代碼折疊功能-提供針對類和方法的代碼折疊功能。

  · outline視圖-提供更詳細的信息,包括對局部變量的支持。

  · ri視圖-從一個rdt視圖中使用ruby的ri工具。

  · 任務(wù)標簽-以ruby注釋形式為可配置的關(guān)鍵字(如todo,fixme)創(chuàng)建任務(wù)。

  · 編輯器方面的改進-自動添加大括號,圓括號和單/雙引號;還有更好的代碼助手。

  · 檢查器快捷方式-在一個調(diào)試會話期間,針對經(jīng)常使用的檢查器提供可配置的快捷方式,如顯示一個對象的所有方法,全局常量,等等。

  接下來的版本將更好地使用jruby字節(jié)碼編譯器。jruby是一項工程,它允許把ruby代碼編譯為java字節(jié)碼。這意味著,rdt的以后版本將更容易地加入到eclipse世界中,甚至提供更好的支持。

   十三、 總結(jié)

  ruby最終為業(yè)界人士所廣泛認可和應(yīng)用。其中,部分原因應(yīng)該歸功于ruby on rails工程的成功的驅(qū)動。如今,已經(jīng)到了考慮如何把ruby加入到你的"競爭工具箱"中的時候了。當然,rdt也是吸引你加入這一領(lǐng)域的一個重要因素。



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: av电影免费在线 | 久久久久久亚洲综合影院红桃 | 亚洲国产精品高潮呻吟久久 | 亚洲精品久久久久www | 黑人日比视频 | 久久久久北条麻妃免费看 | 欧美精品激情在线 | 偿还的影视高清在线观看 | 欧产日产国产精品乱噜噜 | 美国黄色毛片女人性生活片 | 有色视频在线观看 | 91 在线免费观看 | 日韩美香港a一级毛片免费 日韩激情 | 国产亚洲高清在线精品不卡 | 色柚视频网站ww色 | 欧美激情首页 | 国产中出视频 | 精品国产专区 | 国产精品视频二区不卡 | 欧美成年人视频 | 中文字幕在线视频网站 | 日韩精品一二三区 | 手机视频在线播放 | 午夜久久视频 | 久草在线高清视频 | 一级免费毛片 | 91一区二区在线观看 | 青青草成人影视 | 国产精品一品二区三区四区18 | 日韩黄色片免费看 | 日本教室三级在线看 | 国产一区二区三区四区精 | 日韩精品久久久久久 | 黄片毛片一级 | 高颜值美女啪啪 | 奶子吧naiziba.cc免费午夜片在线观看 | 护士hd老师fre0性xxx | 久久中文一区 | 特级a欧美做爰片毛片 | 一区二区久久久久草草 | 亚洲五码在线观看视频 |