您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页使用ECLIPSE和RDT插件进行RUBY开发

使用ECLIPSE和RDT插件进行RUBY开发

来源:爱go旅游网
使用Eclipse和RDT插件进行Ruby开发

发表日期:2008-3-23新浪微博QQ空间QQ微博百度搜藏腾讯朋友QQ收藏百度空间人人网开心网一、为什么使用Ruby?现在,为什么众多的java开发者都关注Ruby?Ruby,是10年以前在日本创建的一种通用目的脚本语言,这是一种纯面向对象的语言。不同于Java技术,Ruby中的一切都是对象。Ruby的语法主要来源于Smalltalk,Python和Ada。象Java编程语言一样,Ruby是一种单继续的语言,但是它提供了一些Java技术所没有实现的高级特征,例如闭合(可以认为是一种匿名的内部类)和mix-in(类似于接口,但是较松地绑定于类上)。Ruby也是高度可移植的,能够运行在所有主流的操作系统之上。现在,Ruby正十分热门。人们正在开始把它应用于各种类型的应用程序。因为它是解释型并且使用动态类型化,所以你可以在运行时刻实现在Java中很难实现的技巧。由动态类型化和富于表达的语法所实现的令人吃惊的能力之一是它能够用Ruby创建域特定的语言(DSL)-它们答应你在更高级别的抽象层上工作,从而远离最原始的语言语法。RubyonRails是一种创建基于数据库支持的Web应用程序的框架,这也展示了Ruby的力量。Rake,作为Ruby的Make和Ant合二为一的版本,是这种语言强有力的应用的又一个证实。使用Ruby的另一个原因是,所有的编程发烧友都在使用它。现在,许多Java高手(如GlennVanderburg,BrUCeTate和MartinFowler)都在使用Ruby。即使你不打算把你的所有开发转向Ruby,这种语言也值得你浏览一番。Ruby发展的主要因素之一是,它缺乏一个良好的开发环境(对于那些不想学习Emacs的用户来说)。如今,RDT改变了这一切,而使用Eclipse对此进行试验则最好不过。二、安装在使用Ruby之前,你必须安装Ruby解释器,相应的库和Ruby开发环境。三、取得RubyRuby可用于所有主要的平台上。事实上,你的linux或Cygwin分发包中可能已经包含了它。请打开一个命令提示符,然后输入\"Ruby-v\"。假如你得到一个版本号,那么你已经预备好。否则,你需要检查你所选择的平台的分发包。假如你正在运行Windows,则选择更轻易。RubyForge,作为SourceForge上的Ruby特定的等价物,有一个工程称为One-ClickRubyInstaller,这个程序用于在Windows平台上搭建Ruby环境。它还包括另外一些工具,如一个称为FreeRide的IDE;但是假如你使用RDT的话,你在安装过程中可以跳过这些这项。四、取得文档当你开始使用一种新语言时,文档及有关参考材料是至关重要的。你可以在主Ruby网站得到Ruby文档的在线参考材料,但是你会发现这些文档有点过时(它们是针对于Ruby1.6版本的,而当前版本是1.8.2)。问题是,更新的文档目前还没有从日语翻译过来。然而,你可以在Ruby-doc.org上找到最新的帮助文档。它包括API级的文档(Javadoc的等价物),还有其它一些教程和书籍。假如你是一位严厉的Ruby开发者,那么你应该阅读一下《PRogrammingRuby:ThePragmaticProgrammer'sGuide》(作者是DaveThomas和AndyHunt)一书以取得最佳编程效果。这是一本有关Ruby及Ruby库编程的经典指南。假如你得到此书,那么你还可以参考也是DaveThomas编写的《AgileDevelopmentwithRubyonRails》一书。这是一本有关RubyonRails的入门性书籍。五、得到RDT现在,既然你在自己的计算机上安装了一个可工作的具有良好帮助文档的Ruby,那么接下来你需要安装RDT了。这是一个Eclipse插件,它提供了许多你可能在编辑代码时已习惯的特征。RDT是一个标准的Eclipse插件;因此,你可以直接把压缩文件解压到Eclipse文件夹下,由文档中的路径来处理其它一切。现在,你已经预备好创建一个Ruby工程了(见图1)。图1.创建一个新的Ruby工程与Java相比,Ruby在命名和目录结构方面要求并不严格。在Ruby中创建一个工程实际上只创建一个目录和一个工程文件(不需要.classpath文件,因为Ruby没有classpath)。另外一个与Java技术的显著区别是,Ruby工程向导并不创建显式的src和bin目录。Ruby是解释型的,因此没有输出文件夹。假如你有一个小工程,那么你可以把Ruby源文件放在与工程文件相同的文件夹下。作为选择,你还可以创建你自己的目录层次。你会发现,与Java相比,Ruby很少关心这些。接下来,你将创建一个Ruby源文件。没有特定的向导用于创建一个Ruby源文件。与Java技术相比,Ruby源文件中仅需要较少的结构,所以,为了创建一个Ruby文件,你需要右击工程来创建一个新文件(见下图2)。图2.创建一个Ruby源文件别忘记把标准扩展名.rb添加到该文件(它是正常的Ruby扩展名)。创建一个Ruby文件应该会打开如图3所示的Ruby视图。图3.创建一个Ruby文件将启动Ruby视图Ruby还提供了一个Outline视图(类似于Java提供的那种)。就象它的Java对应物一样,它答应你在Ruby源文件的元素之间进行导航。在图4中,raise_salary_by方法在Outline和源码视图中都被加亮。图4.这个Outline视图实现在源文件中的导航就象其它复杂的插件一样,RDT也答应通过\"Window>Preferences\"对话框增加定制特征。这个定制对话框见图5。图5.RDT安装\"Preferences\"以便实现定制参数选择\"Preferences\"菜单项答应你改变语法加亮,格式化(Ruby世界中的标准缩进是两个空格,而不是四个空格,所以请预备好作一些调整),等等。它还答应你定制编辑器模板并选择你自己的解释器。六、RDT编辑器在Java世界中,我们已习惯于高级编辑器特征-这使得在转到其它不提供同样支持的其它环境时比较困难。RubyIDE中所缺乏的特征之一是没有提供内容助手(它能够提供上下文相关的标识符查找功能)。幸好,RDT编辑器中含有针对Ruby代码的内容助手,见下图6。图6.RDT编辑器提供了内容助手在Ruby中,你不能把一种类型赋值给一个变量或一个方法的返回,而由标识符上下文确定在运行时刻的类型。Ruby中引入了一种被亲切地称为\"ducktyping\"的方法。这种方法的思想是,假如它接受一个假(quack)消息,那么它必须是一个\"duck\"。这看起来似乎妨碍了那些已经习惯了强类型化语言的用户,这种松散类型耦合能够支持Ruby语言中一些更强有力的特征。例如,你可以用Ruby编写一个异常处理器-当你调用一个并不存在的方法时激活它,然后由该异常处理处理器来自由分析这个方法,然后再调用它。这种元编程级在强类型化语言中是很难实现的。针对内容助手的一个挽回特征是,Ruby在使用标识符时使用特定的命名惯例。例如,在Ruby中,所有的成员变量在第一次使用它们时就存在,并且全部由一个@符号所标识,作为其名字的第一个字符。假如你使用内容助手查找成员变量,那么你可以输入@,这样以来你就只能看见成员变量了。图7.在Ruby帮助内容助手中的命名惯例动态类型化仍然妨碍在Ruby中的上下文敏感问题。在图7中,唯一有效的成员变量是正好出现在方法声明上面的那些,也就是@name,@salary和@hire_year。内容助手所提供的另外一些成员来自于另一个类(后面定义)。目前,RDT编辑器还不足够复杂以过滤所有的正确语法但语义上不正确的入口。七、运行与调试IDE的特色之一是在同一个环境下运行和调试你构建的应用程序。RDT能够启用这两项功能。八、指定一个解释器这一任务的实现位于Ruby上部和\"InstalledInterpreters\"入口的\"Windows>Preferences\"对话框中。Ruby是一种解释性的语言,因此,在RDT能够运行或调试你的应用程序之前,你必须把一个解释器与你的环境关联。这种关联位于Ruby顶部的\"Windows>Preferences\"对话框中的\"InstalledInterpreters\"入口处。图8.把一个Ruby解释器与环境相关联对于你正在使用的Ruby版本,你要把\"Location\"文本域指向bin目录,之后由RDT来选取所有其它所需要的信息。一旦你关联了解释器,那么你就为运行应用程序作好了预备。九、运行Ruby应用程序运行一个Ruby应用程序实际上类似于运行一个Java应用程序。你可以使用Run菜单来创建一个Run配置,见下图9。图9.在RDT中建立一个Run配置当你运行应用程序时,RDT将把控制切换到Ruby解释器,然后在Eclipse工作区底部的控制台窗口内运行应用程序,见下图10。图10.在RDT内运行一个Ruby应用程序这个实例显示了运行一个控制台应用程序,但是运行其它类型的应用程序(如GUI程序)的方式与此相同。十、用RDT调试一个IDE要求实现的最要害的特征之一是有效地调试你的应用程序的能力。Ruby解释器包括一个命令行调试器,但是,在如今的图形工具时代有谁会使用一个命令行调试器?幸好,Ruby解释器还通过一特定(可配置)端口来广播其调试信息,而就象RDT这样的工具能够听取该端口并且提供开发者们期望的调试支持类型。为了在RDT中调试一个Ruby应用程序,我们要象上面创建的Run配置一样创建一个Debug配置。然后,你可以通过点击左边的沟槽设置一个断点并使用调试器来启动应用程序。就象在Java技术中一样,IDE将询问你,是否你想要切换到调试视图下。假如你愿意,则你将看见类似下面图11所示的内容:图11.在RDT中调试Ruby应用程序RDT中支持与Java技术调试相同的调试级别。左上边的格子显示出当前执行的线程,右上面的格子显示出变量的值。就象在Java编程语言中一样,你可以进一步分析对象以观看它们内在的成员变量值。中间左边的格子显示当前正运行的应用程序的源代码,中间右边的格子显示Outline视图-它在这里担当编辑器的作用,答应你通过点按一个标识符来进行导航。Debug窗口的底部显示出Ruby解释器在端口1098上广播的调试信息,而由RDT在该端口上听取调试信息。调试器支持是RDT的特色。就算你有一个具有优秀的Ruby支持的编辑器,你仍然必须依靠命令行调试器来调试你的应用程序。拥有一个具有全面功能的调试器将会大大提高软件的生产效率。QQRead.com推出数据恢复指南教程数据恢复指南教程数据恢复故障解析常用数据恢复方案硬盘数据恢复教程数据保护方法数据恢复软件专业数据恢复服务指南十一、测试作为Java开发者最难实现的Ruby特征之一是动态类型化。假如你习惯于一种强类型化语言,那么动态类型化看上去似乎有点混乱。DT答应各种高级元编程技巧-这在一种强类型化语言中是很难或不可能实现的。当然,你可以放弃编译时刻类型检查的安全设置。那么,是否有一个方法能够实现两种世界的最佳结合呢?单元测试应该是每一种语言必须实现的,但是它在动态语言中非凡要害。单元测试比编译揭示了更多的内容。事实上,你应该改变在单元测试和编译之间的关系上的观点。最近,一位高级软件开发专家认为,\"在今后的五年内,我们会把编译作为单元测试的一种弱的实现形式\"。单元测试能够提供证实(verification)-编码将如期实现,而不是仅仅进行你输入内容的语法检查。考虑到单元测试在Ruby世界中的极端重要性,你一定会希望RDT能够使得单元测试易于运行。的确如此!单元测试被包括在Ruby内,因此你不必下载任何其它的扩展。Ruby库中包括了一个TestCase类和一个TestSuite的概念。你可以象创建任何另外的Ruby类一样来创建你的单元测试,从Test::Unit::TestCase中子类化你的测试。列表1是一个Employee类的实例。列表1.Employee类>classEmployeedefinitialize(name,salary,hire_year)@name=name@salary=salary@hire_year=hire_yearendattr_reader:name,:salary,:hire_yeardefraise_salary_by(perc)@salary+=(@salary*(perc*0.01))enddefto_s\"Nameis#{@name},salaryis#{@salary},\"+\"hireyearis#{@hire_year}\"endend相应的单元测试如下:列表2.相应于Employee类的单元测试require'test/unit/testcase'require'test/unit/autorunner'require'hr'classTestEmployee

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务