本教程提供了在 NetBeans IDE 中开发 Ruby 应用程序的快速入门指南。本教程介绍如何使用 IDE 的 Ruby 支持来执行一些典型的应用程序开发任务。
为使本教程简单易学,本教程没有使用数据库。如果您对学习如何构建 Rails 数据库应用程序感兴趣,请参见在 10 分钟内创建 Ruby 博客教程。
要学完本教程,您需要具备以下软件和资源:
软件或资源 | 要求的版本 |
---|---|
NetBeans IDE Ruby 包 | 版本 6.9 |
Java Development Kit (JDK) | 版本 6 |
Rails 框架 | 2.3.4* |
*支持 Ruby 和 Rails 的 NetBeans IDE 6.9 包含 JRuby 1.5 和 Rails 2.3.4 框架。
有关安装和配置 NetBeans Ruby 支持的信息,请参见安装和配置 Ruby 支持。
项目相当于应用程序的工作环境。当您创建新 Ruby 项目时,可以选择从现有文件创建项目,也可以选择使用模板为 Rudy 项目创建一组新文件夹。
注意:当您打开在 IDE 外部构建的现有 Ruby 或 JRuby 项目时,IDE 对该项目所做的唯一与 NetBeans 软件相关的修改便是创建 nbproject 文件夹,该文件夹包含 NetBeans meta 数据。
可以同时在 IDE 中打开若干个项目。打开了多个项目时,当前项目是您正在对其执行操作(例如,编辑其中的某个文件)的项目。如果将某个项目设置为主项目,则只要该项目处于打开状态,它就一直是当前项目。当前项目的名称显示在 IDE 的标题栏中。当前项目是指 IDE 在您单击“运行项目”按钮时运行的项目。
创建新 Ruby 项目时,IDE 在缺省情况下会创建一个名为 main.rb 的文件,并将此文件设置为主脚本。单击“运行项目”按钮 (
) 后,IDE 会保存所有文件更改并运行主脚本。要切换到其他启动脚本,请右键单击“项目”窗口中的项目节点,然后从弹出式菜单中选择“属性”。选择“运行”类别,然后在“主脚本”文本字段中键入文件名。
执行以下步骤来创建 Ruby 项目。
如果您尚未完成此操作,则使用以下列表中的相应步骤来启动 IDE。
在“项目”窗口中的空白处单击鼠标右键,然后从弹出式菜单中选择“新建项目”,如下图所示。
您可以通过在主工具栏右侧显示的搜索框中键入操作的前几个字符来快速访问大多数菜单操作,如下图所示。
在“新建项目”向导的“类别”窗格中选择 "Ruby",并在“项目”窗格中选择“Ruby 应用程序”,如下图所示,然后单击“下一步”。
键入项目名称(例如 simple_ruby_application),如下图所示。
(可选)选择 Ruby 平台。
要将其他 Ruby 平台添加到列表中,请单击“管理”打开平台管理器。单击管理器的“帮助”按钮可以了解如何注册已安装的 Ruby 平台。
单击“完成”。
IDE 在编辑器中显示 main.rb 文件,如下图所示。请注意代码如何调用 puts 来显示字符串 "Hello World"。
“项目”窗口将显示项目文件的逻辑视图。单击“文件”标签查看物理布局,然后切换回“项目”窗口。对于 Rudy 项目,这些视图非常类似。
在“项目”窗口中右键单击项目节点,然后选择“运行”。
IDE 在 IDE 底部的窗口中显示输出,如下所示。
使用 Ruby 项目文件的方式类似于从文本编辑器使用这些文件的方式。可以通过双击“项目”窗口或“文件”窗口中的文件节点来打开文件。也可以按 Alt-Shift-O 组合键(在 Mac 上按 Ctrl-Shift-O 组合键)按名称访问文件。
IDE 的编辑器提供了许多功能以简化您的编程任务。您将在此部分了解一些基本的编辑功能。可以在 NetBeans Ruby 编辑 wiki 页中找到完整的编辑功能列表。
执行以下步骤来创建一个用于显示产品列表的简单 Ruby 项目。首先,为产品项目类创建单元测试。接下来,创建 Item 类并运行单元测试来验证该类。最后,创建一个数据文件来提供项目数据,然后编辑 main.rb 文件以显示该列表。在您开发代码时,这些步骤也介绍了编辑功能。
在“项目”窗口中,创建单元测试,方法是右键单击“测试文件”节点,然后从弹出式菜单中选择“新建”>“Ruby 单元测试”,如下图所示。
在“类”文本框中键入 ItemTest,如下图所示。
IDE 会根据“类”名称设置“文件名”。Ruby 约定将使用驼峰匹配(嵌入大写字母)分隔类名称中的字词,使用下划线分隔文件名中的字词。
确保从“位置”下拉列表中选择了“测试文件”。
单击“完成”。
IDE 在编辑器中打开该文件。
将该文件的内容替换为以下代码。
$:.unshift File.join(File.dirname(__FILE__),'..','lib')require 'test/unit'require 'item'class ItemTest < Test::Unit::TestCase PRICE = 24.95 TYPE = "book" ID = "BF1" def test_string assert_equal("Item BF1 is a book: Price $24.95", Item.new(ID, TYPE, PRICE).to_s, "Wrong String") endend
单击文件标签中的小 x 关闭该文件。在“问题”对话框出现时,单击“保存”。
在“项目”窗口中,通过右键单击“源文件”节点并从弹出式菜单中选择“新建”>“Ruby 类”来创建类文件。
在“类”文本框中键入 Item。
确保从“位置”下拉列表中选择了“源文件”。
单击“完成”。
IDE 将创建一个名为 item.rb 的文件,并在编辑器中打开该文件。
(可选)现在,您已创建 Item 类,可以试用单元测试了。右键单击 simple_ruby_application 项目节点,然后从弹出式菜单中选择“测试”。
由于您尚未定义该类,因此测试失败,如下图所示。
注意:“测试”操作会运行所有的项目单元测试。
将 item.rb 文件的内容替换为以下代码。
# Class to represent an item sold in the store.class Itemdef initialize(id, type, price)@id, @type, @price = id, type, priceenddef to_s"Item #{@id} is a #{@type}: Price $#{@price}"end# Returns an array of all the items sold in the store.def self.load_item_dataitems = []File.open("data.txt") do |data_file|data_file.readlines.each do |line|items << Item.new(*line.split("\s"))endenditemsendend
将光标放在 class Item 行上,然后按 Shift-Enter 组合键在类块的顶部打开一行。
此步骤与下面的三个步骤结合起来,显示如何使用代码完成。将光标放在空白行中,键入 attr_a,然后按 Ctrl-空格键。如果 Ctrl-空格键在您的系统上不起作用,请使用 Ctrl-\ 组合键。
IDE 将显示可能的代码完成列表,如下图所示。
选择 attr_accessor :attr_names rw,然后按 Enter 键。
IDE 将完成代码,并选择 attr_names 进行编辑,如下图所示。
键入 id, :type, :price 完成该语句,然后按 Enter 键。
该语句应该类似于以下代码。 attr_accessor :id, :type, :price
选择 attr_accessor 方法的每个参数,然后注意 IDE 如何突出显示每个属性的使用。
此 attr_accessor 方法调用会创建 id、type 和 price 的 getter 方法。这些 getter 方法使 Item 类的用户可以访问 id、type 和 price 实例变量的值。
接下来,将 open 方法的参数更改为常量。选择 "data.text" 字符串,包括引号。
可以通过用于选择封闭块的 Alt-Shift-句点 (.) 组合键(在 Mac 上使用 Ctrl-Shift-句点组合键)来选择该字符串。
注意显示在左旁注中的灯泡图标。此图标指示 IDE 提供了关于选定内容的提示。
将光标放在灯泡上查看提示,如下图所示。
按 Alt-Enter 组合键(在 Mac 上按 Ctrl-Shift-Enter 组合键)显示快速修复选项。
IDE 将显示所选字符串的可用快速修复,如下图所示。
选择“引入常量”,然后按 Enter 键。
将显示“引入常量”对话框。
在“名称”文本框中键入 data_file,然后单击“确定”。
IDE 将添加常量的声明,并将参数更改为使用常量而不是字符串。注意 IDE 是如何将常量名称更改为全部大写字母的。按照惯例,使用大写字母并插入下划线作为字词分隔符来拼写常量。
已完成的脚本应该类似于以下代码样例。
# Class to represent an item sold in the store.class Item # TODO Comment DATA_FILE = "data.txt" attr_accessor :id, :type, :price def initialize(id, type, price) @id, @type, @price = id, type, price end def to_s "Item #{@id} is a #{@type}: Price $#{@price}" end # Returns an array of all the items sold in the store. def self.load_item_data items = [] File.open(DATA_FILE) do |data_file| data_file.readlines.each do |line| items << Item.new(*line.split("\s")) end end items endend
现在,您可以验证类是否通过测试。在源代码中单击鼠标右键,然后从弹出式菜单中选择“测试文件”。
IDE 在 ItemTest 类中运行测试,并在“Ruby 测试结果”窗口中显示输出,如下图所示。
确保“文件夹”设置为 lib,然后单击“完成”。
注意:您要将该文本文件放在 lib 文件夹中,因为缺省情况下,从 IDE 运行项目时,工作目录为 lib 文件夹。
将以下文本粘贴到 data.txt 文件中。请务必不要在该文本的开头留有任何空格!
BF15678 book 25.32C29589 cd 18.95F89028 beverage 2.00BN98232 book 45.33BF15890 book 15.98
在“项目”窗口中,双击 main.rb 以在编辑器窗口中显示该文件。将该文件的内容替换为以下语句,这些语句显示项目列表:
Item.load_item_data.each do |item| line_item = item.to_s line_item.gsub!(/book/, 'fiction \0') if item.id =~ /\AB[FN]/ line_item.gsub!(/fiction/, 'non-\0') if item.id =~ /\ABN/ puts line_itemendputs "\n"
刚才复制的代码包含两个 Regexp 对象:/\AB[FN]/ 和 /\ABN/。将光标放在其中一个 Regexp 对象内,如下所示,然后按 Ctrl-空格键。
IDE 将显示正则表达式字符和字符组合的列表。查看插入到 data.txt 的数据,并判断哪些项目同时匹配这两个正则表达式。
按 Ctrl 键,并将光标拖至对 gsub 方法的某个调用上方。
IDE 将显示 gsub 方法的 RDoc 文档,如下图所示。
如果 Rdoc 文档超出了显示框的范围,则可以单击方法或类,并按 Ctrl-Shift-空格组合键(在 Mac 上按 Cmd-Shift-空格组合键)在带滚动条的显示框中查看 Rdoc。
在文件的顶部打开一行,然后键入 require '(单引号)。
请注意 IDE 是如何提供结束单引号并将光标放在引号之间的,如下图所示。IDE 自动插入和删除匹配的分隔符(例如引号、花括号和方括号)以及代码块的 end 语句。
将光标放在单引号内,键入字符 it,然后按 Ctrl-空格键。
由于 item.rb 文件是唯一可能以 "it" 开头的导入,因此 IDE 将使用 item 自动完成该字符串。
单击 line_item 变量的某个使用实例,然后按 Ctrl-R 组合键。
IDE 以蓝色突出显示该变量来指示“即时重命名”模式处于活动状态,如下图所示。
键入 print_line,然后按 Enter 键。
IDE 会将出现的所有 line_item 都更改为新名称。
要运行该项目,请右键单击该项目节点,然后选择“运行”。
IDE 将保存所有更改并运行 main.rb 脚本。应用程序输出将显示在“输出”窗口中,如下图所示。
联系客服