国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
使用 Eclipse 插件 Ruby Development Tools

2005 年 12 月 08 日

本文介紹如何使用 Eclipse 插件 Ruby Development Tools(RDT),這個插件使 Eclipse 能夠成為一流的 Ruby 開發(fā)環(huán)境。那些希望利用 Eclipse 社區(qū)豐富的基礎設施來支持開發(fā)的 Ruby 開發(fā)人員會從本文中受益,對有興趣使用 Ruby 的 Java? 開發(fā)人員也會有所收獲。

為什么要使用 Ruby?

為什么 Java 開發(fā)人員會關心 Ruby?Ruby 是 10 年前在日本開發(fā)出來的通用腳本語言。與流行的信念相反,它是一種純面向對象語言。與 Java 技術不同,Ruby 沒有標量,所以所有東西(包括整數(shù))都是一類對象。Ruby 的語法很大程度上借鑒于 Smalltalk、Python 和 Ada。與 Java 語言相同的地方是,Ruby 也是一種單繼承語言,但是它提供了 Java 技術所缺乏的某些高級特性,比如閉包(與 steroids 上的匿名內(nèi)部類相似)和 mix-ins(與接口相似,但是它們與類的綁定不太緊密)。Ruby 也具有很高的可移植性,可以在所有主流操作系統(tǒng)上運行。

Ruby 現(xiàn)在已經(jīng)很流行了,人們開始用它建立各種應用程序。因為它是解釋語言而且使用動態(tài)類型,所以可以在運行時做許多極其靈活的工作,而這在 Java 中是非常困難的。動態(tài)類型和表達語法所支持的神奇功能之一是,能夠在 Ruby 中創(chuàng)建領域特定的語言,這使開發(fā)人員能夠在更高的抽象級別上工作,從而脫離語言的“原始”語法。Ruby on Rails 是一個用于創(chuàng)建帶后端數(shù)據(jù)庫的 Web 應用程序的框架,它展示了這種優(yōu)雅性。Rake(Make 和 Ant 相結合的 Ruby 版本)也展示了 Ruby 的這種強大能力。

使用 Ruby 的另一個理由是,許多敏銳的開發(fā)人員已經(jīng)開始使用它了。那些在 1996 年就認識到 Java 技術即將流行的開發(fā)人員(比如 Glenn Vanderburg、Bruce Tate 和 Martin Fowler)現(xiàn)在已經(jīng)開始使用 Ruby。即使您還不打算全面轉向 Ruby,現(xiàn)在也應該研究一下這種語言了。

對于用 Ruby 進行廣泛的開發(fā),主要的限制因素之一是缺少一個出色的開發(fā)環(huán)境(對于那些不想學習 Emacs 的人來說尤其如此)。RDT 改變了這種狀況。在您喜歡的 Eclipse IDE 中使用 Ruby,這會使您感到舒適。





回頁首


準備

在開始使用 Ruby 之前,必須安裝(或者驗證已經(jīng)具有了) Ruby 解釋器和庫以及 Ruby Development Environment。

獲得 Ruby

可以獲得適合所有主流平臺以及幾個次要平臺的 Ruby 版本。實際上,您的 Linux? 或 Cygwin 發(fā)行版可能已經(jīng)包含了 Ruby。轉到命令提示符下并輸入 ruby -v。

如果看到一個版本號,就說明 Ruby 已經(jīng)有了。如果沒有看到版本號,就需要獲取 Ruby。先尋找適合您平臺的 發(fā)行版

如果您正在使用 Windows?,就更容易了。RubyForge(與 SourceForge 功能相似)有一個稱為 One-Click Ruby Installer 的項目,這個程序會在 Windows 上建立 Ruby 環(huán)境(參閱 參考資料)。它還包含幾個工具,包括稱為 FreeRide 的 IDE,但是如果使用 RDT,則可以不用理會大多數(shù)這些工具。





回頁首


獲得文檔

在開始使用一種新語言時,文檔和其他參考資料是非常重要的??梢栽?Ruby 主 Web 站點上獲得 Ruby 文檔的在線參考,但是您會發(fā)現(xiàn)這里的文檔有點兒過時了(它針對 Ruby V1.6,而當前版本是 1.8.2)。這是因為最新的文檔還沒有從日文翻譯成英文。但是在 Ruby-doc.org 上可以找到最新的文檔。它包含 API 級文檔(與 Javadoc 等同)以及一些教程和書籍。(參閱 參考資料。)

如果您關心 Ruby 開發(fā),那么應該盡快獲得 Dave Thomas 和 Andy Hunt 撰寫的 Programming Ruby: The Pragmatic Programmer‘s Guide(參閱 參考資料)。這是對 Ruby 的標準介紹并且介紹了 Ruby 庫的需求。在閱讀這本書的同時,還可以閱讀 Dave Thomas 撰寫的 Agile Development with Ruby on Rails,其中介紹了 Ruby on Rails。

獲得 RDT

既然已經(jīng)在計算機上安裝了可以工作的 Ruby 版本并且獲得了文檔,現(xiàn)在就需要 RDT 了(參閱 參考資料)。這個 Eclipse 插件提供了許多特性,您在編輯代碼時會慢慢熟悉這些特性。RDT 是一個標準的 Eclipse 插件,具有特性和插件,所以可以將 zip 文件直接解壓縮到 Eclipse 文件夾。存檔文件中的路徑會建立目錄結構。

現(xiàn)在可以創(chuàng)建 Ruby 項目了(參見圖 1):


圖 1. 創(chuàng)建新的 Ruby 項目

與 Java 技術相比,Ruby 對名稱和目錄結構的要求寬松多了。在 Ruby 中創(chuàng)建一個項目實際上只是創(chuàng)建一個目錄和一個 .project 文件(這里不需要 .classpath 文件,因為 Ruby 沒有類路徑)。與 Java 技術相比,另一個顯著差異是 Ruby 項目向導并不創(chuàng)建顯式的 srcbin 目錄。Ruby 是解釋語言,所以沒有輸出文件夾。如果項目比較小,那么可以將 Ruby 源代碼文件與項目文件放在同一個文件夾中。也可以創(chuàng)建自己的目錄結構。您會發(fā)現(xiàn),與 Java 語言相比,Ruby 不太關心目錄結構。

接下來,需要一個 Ruby 源代碼文件。沒有專門用于創(chuàng)建 Ruby 源代碼文件的向導。與 Java 技術不同,對于 Ruby 源代碼文件的結構沒有什么要求,所以要創(chuàng)建 Ruby 文件,只需使用項目的右擊菜單創(chuàng)建一個新文件。


圖 2. 創(chuàng)建 Ruby 源代碼文件

不要忘記在文件名后面加上標準的擴展名 .rb,這是一般的 Ruby 擴展名。創(chuàng)建 Ruby 文件應該會打開 Ruby 透視圖。


圖 3. 創(chuàng)建 Ruby 源代碼文件會打開 Ruby 透視圖

Ruby 透視圖還提供一個大綱視圖,這與 Java 透視圖提供的大綱視圖相似。與 Java 大綱視圖相似,它允許導航 Ruby 源代碼文件的元素。在圖 4 中,raise_salary_by 方法在大綱視圖和源代碼視圖中高亮顯示。


圖 4. 大綱視圖允許在源代碼文件中進行導航

與其他復雜的插件一樣,RDT 也在 Window > Preferences 對話框中增加了定制特性。這個首選項對話框如圖 5 所示。


圖 5. RDT 的定制首選項

首選項菜單項允許修改語法高亮顯示方式、格式化(在 Ruby 中標準的縮進是兩個空格,不是四個,所以要做某些調(diào)整)等等。它還允許定制編輯器模板以及選擇解釋器。





回頁首


RDT 編輯器

在 Java 技術環(huán)境中,我們已經(jīng)習慣了高級的編輯器特性,這使我們在轉移到?jīng)]有提供這些特性的其他環(huán)境時不太適應。Ruby IDE 缺乏的特性之一是 Content Assist,這種特性針對標識符進行上下文相關的查找。RDT 編輯器對 Ruby 代碼提供了 Content Assist。


圖 6. RDT 編輯器提供 Content Assist

RDT 編輯器中的 Content Assist 沒有 Java 環(huán)境中那么有針對性,因為 Ruby 支持動態(tài)類型。在 Ruby 中,不能將類型賦給變量或者方法返回值。標識符上下文在運行時決定類型。Ruby 使用所謂的“duck typing” —— 也就是說,如果它接受“鴨叫”消息,那么它一定是鴨子。對于那些習慣于強類型語言的人來說,這可能像是一種阻礙,但是這種弱類型耦合使 Ruby 語言能夠實現(xiàn)某些更強大的特性。例如,在 Ruby 中可以編寫一個異常處理程序,如果調(diào)用一個不存在的方法就會觸發(fā)這個程序,這個異常處理程序可以動態(tài)地合成這個方法并且調(diào)用它。在強類型語言中很難實現(xiàn)這種元編程。

Content Assist 彌補的特性之一是 Ruby 對標識符使用的特殊命名約定。例如,在 Ruby 中,所有成員變量在第一次使用時才存在,而且都由 @ 符號作為名稱的第一個字符。如果使用 Content Assist 查找成員變量,那么可以輸入 @,并且只看到成員變量。


圖 7. Ruby 中的命名約定幫助實現(xiàn) Content Assist

動態(tài)類型仍然會妨礙 Ruby 中的上下文敏感性。在圖 7 中,合法的成員變量只是在上面方法聲明中出現(xiàn)的成員變量,即 @name、@salary@hire_year。Content Assist 挑選出的其他成員變量來自后面定義的另一個類。RDT 編輯器還不完善,無法過濾出所有語法上正確但是語義上不正確的條目。





回頁首


運行和調(diào)試

IDE 的關鍵特性之一是能夠在構建應用程序的環(huán)境中對應用程序進行運行和調(diào)試。RDT 支持這兩種功能。

指定解釋器

Ruby 是一種解釋語言,所以必須將一種解釋器與環(huán)境相關聯(lián),然后 RDT 才能運行或調(diào)試應用程序。這種關聯(lián)是在 Windows > Preferences 對話框中 Ruby 標題下面的 Installed Interpreters 項中設置的。


圖 8. 將 Ruby 解釋器與環(huán)境關聯(lián)起來

將“Location”文本域指向您使用的 Ruby 版本的 bin 目錄。RDT 會找到所需的其他信息。關聯(lián)了解釋器之后,就可以運行應用程序了。

運行 Ruby 應用程序

運行 Ruby 應用程序與運行 Java 應用程序實際上完全一樣。使用 Run 菜單創(chuàng)建一個 Run 配置。


圖 9. 在 RDT 中建立 Run 配置

在運行應用程序時,RDT 啟動 Ruby 解釋器并且在 Eclipse 工作區(qū)底部的一個控制臺窗口中運行這個應用程序。


圖 10. 在 RDT 中運行 Ruby 應用程序

這個例子顯示如何運行一個控制臺應用程序,但是運行其他類型的應用程序(比如圖形化應用程序)也是一樣的。

用 RDT 進行調(diào)試

IDE 需要的最關鍵的特性之一是能夠有效地調(diào)試應用程序。Ruby 解釋器包含一個命令行調(diào)試器,但是在這個圖形化工具的時代誰還想使用命令行調(diào)試器?幸運的是,Ruby 解釋器還通過一個特定(可配置)的端口廣播調(diào)試信息,RDT 這樣的工具能夠監(jiān)聽這個端口并且提供開發(fā)人員期望的調(diào)試支持類型。

要調(diào)試 Ruby 應用程序,需要創(chuàng)建一個 Debug 配置,就像前面創(chuàng)建 Run 配置一樣。然后,在左邊的空白處點擊以設置斷點,并使用調(diào)試器啟動應用程序。與 Java 技術一樣,IDE 將詢問您是否想切換到 Debug 透視圖?;卮鹬螅瑢⒖吹较旅孢@樣的屏幕:


圖 11. 在 RDT 中調(diào)試 Ruby 應用程序

RDT 提供了與 Java 技術相同的調(diào)試支持級別。左上方的窗格顯示當前正在執(zhí)行的線程。右上方的窗格顯示變量的值。與 Java 語言中一樣,可以深入到對象中,查看它們的底層成員變量值。左邊中間的窗格顯示正在運行的應用程序的源代碼,右邊中間的窗格顯示大綱視圖(它在這里的工作方式與在編輯器中一樣,讓開發(fā)人員能夠通過點擊標識符來進行導航)。Debug 窗口的底部顯示 Ruby 解釋器在端口 1098 上廣播調(diào)試信息,RDT 在這個端口上監(jiān)聽調(diào)試信息。

調(diào)試支持是 RDT 的關鍵特性。即使您的編輯器有出色的 Ruby 支持,但是仍然必須依賴命令行調(diào)試器來調(diào)試應用程序。擁有一個功能全面的調(diào)試器可以顯著提高生產(chǎn)效率。





回頁首


測試

對于 Java 開發(fā)人員,Ruby 最難掌握的特性之一是動態(tài)類型。如果您已經(jīng)習慣了強類型語言,那么動態(tài)類型看起來可能會導致混亂。動態(tài)類型支持所有高級的元編程技巧,這在強類型語言中是很難實現(xiàn)的,甚至不可能。當然,還會失去編譯時檢查的安全保障。是否有辦法同時獲得這兩種環(huán)境的優(yōu)勢呢?

對于語言,單元測試是必需的,但是在動態(tài)語言中它特別重要。單元測試能夠比單純編譯揭示出更多的問題。實際上,您應該換個角度看待單元測試和編譯之間的關系。近來,在一個軟件開發(fā)專家討論會上,軟件開發(fā)思想家 Relevance 公司的 Stuart Halloway 指出,“在 5 年內(nèi),我們將看到編譯成為一種比較弱的單元測試形式。”單元測試檢驗代碼是否做了開發(fā)人員希望它做的事兒,而不只是對類型進行拼寫檢查。

既然單元測試在 Ruby 環(huán)境中如此重要,那么當然希望 RDT 可以使運行單元測試更容易。它確實做到了。單元測試已經(jīng)包含在 Ruby 中,所以不需要下載任何額外的擴展代碼。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                        

對應的單元測試是:


清單 2. 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)建一個 Test::Unit 類型的 Run 配置。


圖 12. RDT 包含 Test::Unit Run 配置

在運行這個測試時,可以獲得與 Java 單元測試相同的支持元素,包括左下角與 JUnit 相似的面板。


圖 13. 在 IDE 中運行的單元測試示例

在 Ruby 中還可以創(chuàng)建 TestSuites。TestSuites 是定義套件方法的 Ruby 類,這個方法返回 TestSuite。TestSuite 由在每個 TestCases 中自動定義的套件組成。清單 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 的例子不同,套件作為單獨的應用程序運行。Ruby 有兩種顯示 TestSuite 結果的方法。第一種是 Console Test Runner,它在控制臺輸出結果。第二種是 Tk TestRunner,它創(chuàng)建一個對話框來顯示測試結果。Tk TestSuite 對話框見圖 14。


圖 14. 圖形化的 TestSuite 對話框





回頁首


未來的發(fā)展

RDT 的當前版本是 0.50。它的開發(fā)人員正在為下一個版本 0.60 而努力。下一個版本中計劃的改進包括:

  • 代碼折疊 —— 可以將類和方法的代碼折疊起來。
  • 大綱視圖 —— 更詳細,支持局部變量。
  • RI 視圖 —— 從 一個 RDT 視圖使用 Ruby 的 ri 實用程序。
  • 任務標記 —— 在 Ruby 注釋中為可配置的關鍵字(比如 TODO、FIXME)創(chuàng)建任務。
  • 編輯器改進 —— 自動補齊方括號、圓括號和單/雙引號;更好的代碼輔助。
  • 審查的快捷方式 —— 對 Debug 會話期間經(jīng)常使用的審查提供可配置的快捷方式,比如顯示對象的所有方法、全局變量,等等。

下一個版本將更好地使用 JRuby 字節(jié)碼編譯器。JRuby 項目可以將 Ruby 代碼編譯為 Java 字節(jié)碼。這意味著 RDT 的下一版本將更容易集成到 Eclipse 環(huán)境中,提供更好的支持。





回頁首


結束語

Pragmatic Programmer: From Journeyman to Master 一書中最出色的建議之一是:您應該每年學習一種新的編程語言從而跟上潮流,并且通過新語言學習一些新知識。Ruby 就快要廣泛流行了,這在某種程度上是由于 Ruby on Rails 項目獲得了成功。到了將 Ruby 加進您的工具庫的時候了。RDT 是您掌握 Ruby 的好幫手。





回頁首


參考資料

學習
  • 您可以參閱本文在 developerWorks 全球站點上的 英文原文

  • Ruby 語言的官方站點 Ruby-lang.org 是通向其他 Ruby 站點和文檔的門戶。

  • Ruby on Rails 是一個有影響力的基于 Ruby 的 Web 應用程序框架。這個站點允許下載 rails 并且查看示例應用程序。

  • Rubyforge.org 提供 One-Click Ruby Installer,這個程序在 Windows 上建立 Ruby 環(huán)境。

  • Ruby-doc.org 上可以找到最新的 Ruby 文檔。

  • Dave Thomas 撰寫的 Programming Ruby, The Pragmatic Programmer‘s Guide, 2nd Edition 是 Ruby 語言的指南。這本書采用一種非常容易閱讀的方式編寫,是新接觸 Ruby 的人的首選書籍。即使您不關心 Ruby,也應該閱讀這本經(jīng)典的軟件工程著作。

  • 如果您對 Rails 感興趣,那么 Dave Thomas 和 David Heinemeier Hansson 撰寫的 Agile Development with Rails: A Pragmatic Guide 是不錯的入門書。這本書明確地指導如何用 Rails 進行開發(fā)。

  • Andrew Hunt 和 David Thomas 撰寫的 The Pragmatic Programmer: From Journeyman to Master 建議開發(fā)人員應該每年學習一種新語言。

  • Glenn Vanderburg 是一位軟件思想家,常常提出有意思的觀點。他是最先認識到并且宣傳 Java 技術的潛力的人之一,他編寫了最早的高級 Java 書籍,近幾年他積極支持 Ruby。

  • Bitter JavaBitter EJB 的作者 Bruce Tate 也大力支持 Ruby 并且可能從 Java 技術轉向 Ruby。他的幾本書指導開發(fā)人員如何從 Java 人變成 Ruby 人。請閱讀 developerWorks 上他的 “Secrets of lightweight development success” 系列。

  • Martin Fowler 是軟件工程領域中最響亮的名字之一。他理解深奧的概念并且能夠極其透徹地表述這些概念。幾年來,他大力宣傳 Ruby 的潛力,促使大家轉向 Ruby。他常常在自己的 blog 上介紹 Ruby。

  • developerWorks 提供了許多 Ruby 文章和教程,包括 “調(diào)試 Ruby 程序技巧 101” 和 “用 Rake 自動執(zhí)行任務”。

  • 請訪問 developerWorks 的 開放源碼專區(qū),這里有豐富的 how-to 信息、工具和項目更新,可以幫助您利用開放源碼技術進行開發(fā)并且將其用于 IBM 產(chǎn)品。


獲得產(chǎn)品和技術
  • 獲得 Ruby Development Tools,這個 Eclipse 插件添加了 Ruby 支持,包括 Content Assist、調(diào)試和單元測試支持。

  • 可以從 Rubyforge.org 獲得 Rake,這是 Ruby 的構建工具。Rake 提供一種用于執(zhí)行構建的語言,提供了 Make 和 Ant 兩者的優(yōu)秀特性。它還展示了 Ruby 靈活的語法如何輕松地創(chuàng)建具有高度針對性的領域專用語言。

  • 使用 IBM 試用版軟件 改進您的下一個開放源碼開發(fā)項目,這些軟件可以下載或者通過 DVD 獲得。


討論




回頁首


關于作者

Neal Ford 是 ThoughtWorks 的應用架構師,這是一家 IT 專業(yè)服務公司,它網(wǎng)羅了世界各地的天才,致力于從軟件中獲得更多價值。他是許多應用、教學資料、雜志文章、課件、視頻/DVD 演示的設計者和開發(fā)人員,還是 Developing with Delphi: Object-Oriented Techniques、JBuilder 3 UnleashedArt of Java Web Development 等書籍的作者。他主要關注的領域是大規(guī)模企業(yè)應用程序的構建。他還是在國際上受歡迎的演講者,曾經(jīng)在世界各地的許多開發(fā)人員會議上發(fā)言。他歡迎您通過 neal.ford@gmail.com 與他聯(lián)系。



本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
使用 Eclipse 和 RDT 開發(fā)Ruby應用程序
Using the Ruby Development Tools plug-in for Eclipse
Windows下RDT+Eclipse搭建ruby開發(fā)環(huán)境配置
用Eclipse輕松地進行Ruby開發(fā)
Windows平臺的ruby IDE 點評
Groovy和Grails簡介
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服