0

我在 Eclipse 中安装了Dynamic Languages Toolkit for Ruby插件,但它不工作:

细节:

  • Eclipse 版本: Eclipse 4.2.2
  • 操作系统详情: Ubuntu 10.04
  • 红宝石版本:红宝石1.9.2p180

这是我的红宝石代码:

# cat array.rb 
#!/usr/bin/ruby
require "awesome_print"

hash = {
        :name => "your_self",
        :place => ["where", "somewhere"],
} 
ap hash

这是从 Eclipse 运行时的错误:

<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- awesome_print (LoadError)

然而,我可以从控制台手动运行这段代码,它给了我输出:

# ruby array.rb 
{
     :name => "your_self",
    :place => [
        [0] "where",
        [1] "somewhere"
    ]
}

不用说,我确实安装了awesome_printgem:

# gem list | grep awesome
awesome_print (1.2.0)

在 Eclipse 中,我确实设置了 ruby​​ 解释器,如下所示: 在此处输入图像描述

问题:此问题仅在我require在代码中使用时才会出现。否则 Eclipse 可以很好地运行 ruby​​ 代码。我在日食中缺少什么?

更新:

如果我使用:

require "/usr/local/lib/ruby/gems/2.0.0/gems/awesome_print-1.2.0/lib/awesome_print.rb"

然后 Eclipse 能够很好地运行代码。所以我认为这与某些东西的红宝石/日食search path有关。

4

1 回答 1

0

奇怪的事情正在发生。而不是#!/usr/bin/ruby,我必须成功#!/usr/local/bin/ruby

我不得不在 Eclipse 中对 ruby​​ 解释器设置进行类似的更改。现在我的代码工作正常。

所以,现在我意识到我实际上安装了两个版本的 ruby​​:

# /usr/bin/ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]
# /usr/local/bin/ruby -v
ruby 2.0.0p353 (2013-11-22 revision 43784) [i686-linux]

我不知道版本是如何2.0.0安装的。

我只安装了1.9.2. 然后跑gem install awesome_print

所以,如果我改变shebangandeclipse使用 ruby2.0.0​​ ,它工作正常。可能,我awesome_print只安装了 2.0.0

这太令人困惑了。反正。我现在很好。红宝石学习!!!

但是话又说回来,为什么即使使用 ruby​​ verion 我也能够从命令行很好地运行相同的程序1.9.2

更新:

所以,我错了,当我运行ruby array.rb它时它实际上正在运行/usr/local/bin/ruby,因此它可以从命令行运行。但是在 Eclipse 中,我将 ruby​​ 解释器设置为原样/usr/bin/ruby并且1.9.2.它给出了错误。

我可以通过运行从命令行重现相同的错误/usr/bin/ruby array.rb

所以...

这意味着,我安装的 ruby​​ 1.9.2 并不好。我仍然不知道红宝石2.0.0是从哪里来的。但是现在,我应该卸载并摆脱1.9.2.

于 2013-12-10T11:22:08.553 回答