【问题标题】:Problems running Ruby program with Aptana Studio使用 Aptana Studio 运行 Ruby 程序时出现问题
【发布时间】:2011-07-21 20:56:23
【问题描述】:

下面的请求是 based upon an earlier version posted on the Aptana Tender site,它没有收到响应 - 大概是因为 Aptana Tender 站点现在已经是 deprecated in favour of StackOverflow

我在 Macbook 上的 Mac OS X 10.6.8 Snow Leopard 上使用 Eclipse 3.6.2.r362_v20110210 和 Aptana Studio 插件版本 3.0.3.201107141410(我相信所有这些都是最新的)。

我创建了一个 Ruby 项目,然后在其中创建了一个名为“item.rb”的文件,我在其中编写了一些 Ruby 代码。

该文件非常短:它定义了一个“Item”类,其中包含一个向用户询问值的初始化方法(使用“puts”后跟“gets.chomp”)和一个返回值的 get 方法,并且它还包含另外两行:一行用于创建新 Item,另一行用于在新创建的 Item 上调用该方法。

当我从终端运行“ruby item.rb”时,它按预期工作:它向用户询问一个值,然后返回该值。没有错误/警告。

现在,我不想每次执行文件时都必须使用终端,但我无法以任何其他方式运行它。

以下是重现的步骤:

  • 在 Eclipse 主菜单中,转到 Window > Open Perspective > Other。
  • 在出现的对话框中,单击“Ruby”并单击“确定”。
  • 在“脚本资源管理器”视图中,单击包含我要运行的文件的项目名称旁边的三角形,以便显示项目的内容。
  • 在“脚本资源管理器”视图中,双击我要运行的文件的名称 (item.rb)。
  • 这会导致 item.rb 在编辑器视图中打开,并赋予该视图焦点(即包含 item.rb 的编辑器视图具有蓝色而不是灰色边框,并且视图内有一个活动光标)。
  • 单击 Eclipse 工具栏上的“运行”按钮(看起来像绿色的“播放”)按钮。
  • 第一个问题:弹出“运行方式...”对话框(我不知道为什么)要求我“选择一种运行方式 'item.rb'”。它给了我两个选择(同样,我不知道为什么):“Android 应用程序”、“Ruby 应用程序”。
    • 预期行为:因为 item.rb 是以“.rb”结尾的文件并且只包含有效的 Ruby 代码,所以 Eclipse/Aptana 默认应该将其作为 Ruby 应用程序运行。李>
  • 我点击“Ruby Application”,然后点击“OK”。
  • 第二个问题:对话框消失了,但没有其他反应。
    • 预期行为:控制台视图应该获得焦点,并且 item.rb 应该被执行,结果显示在控制台视图的文本区域中。
  • 到此为止,放弃是合理的。但是程序员的执着是不合理的,对吧?所以:点击控制台选项卡。
  • 控制台视图的标题显示“item.rb [Ruby 应用程序] /usr/bin/ruby”,下面是一个空白文本区域,其中仅包含一个闪烁的光标。
  • 按一次或两次 Macbook 键盘上的 键。
  • 第三个问题:控制台视图的文本区域突然更新为 item.rb 的输出,但奇怪的是,它并没有在 gets.chomp 处停止,它就像用户在那个阶段输入了一个空响应(即好像用户只是按下了键盘上的 键),然后继续耕作,直到整个程序执行完毕。控制台视图的标题随后更改为“ item.rb [Ruby Application] /usr/bin/ruby”。
    • 预期行为:item.rb 应该像在终端中一样在控制台视图中执行。

请你帮我解决这三个问题?

非常感谢。

【问题讨论】:

    标签: ruby aptana


    【解决方案1】:

    听起来您安装了旧版本的 Aptana、RDT、RadRails 或 DLTK Ruby,因为 Aptana Studio 3.x 中没有“Ruby”透视图。

    您应该能够在 Project Explorer、App Explorer 或文件的打开编辑器中右键单击该文件,然后选择 Run As > Ruby Application。

    理想情况下,您应该先删除所有旧安装的 ruby​​ 插件,以避免在这样做之前发生某种冲突。然后它应该会按预期启动文件。

    您正在谈论的 Enter/Return 行为听起来像程序没有刷新 STDERR/STDOUT 并且按 Enter 正在继续输入输入(因此,它正在缓冲您应该看到形成提示的输出,然后您点击 Enter/Return 并将其作为输入,以便在调用 gets 后继续)。如果打印到 STDOUT 的内容没有显示,您可以尝试通过在脚本顶部添加 $stdout.sync = true 来强制自动刷新。 Studio 3.x 应该在通过它启动的程序上为您静默设置。如果没有,那么你应该提交一个错误:http://jira.appcelerator.org/secure/CreateIssue!default.jspa

    【讨论】:

    • 感谢您回答这个问题,抱歉耽搁了。我尝试使用全新安装的 Aptana Studio 3 来查看是否有帮助,但我仍然遇到了一些问题。下次有机会我会报告更多细节。
    • 恐怕我决定干脆停止使用 Aptana(支持 Vim),这就是我没有报告的原因。
    猜你喜欢
    • 1970-01-01
    • 2012-12-06
    • 2011-08-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    相关资源
    最近更新 更多