我在eclipse中安装了 Dynamic Languages Toolkit for Ruby 插件,但它无法正常工作:
详细信息:
这是我的红宝石代码:
# 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)
HOwever,我可以手动从控制台运行此代码,它为我提供了输出:
# ruby array.rb
{
:name => "your_self",
:place => [
[0] "where",
[1] "somewhere"
]
}
毋庸置疑,我确实安装了awesome_print
gem:
# 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能够正常运行代码。所以我认为这与某些东西的ruby / eclipse search path
有关。
答案 0 :(得分: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
因此,如果我更改shebang
和eclipse
以使用ruby 2.0.0
,那么它运行正常。可能我的awesome_print
仅安装了2.0.0
这太令人困惑了。无论如何。我现在好。 Ruby学习!!!
但话又说回来,为什么即使使用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并不好。我仍然不知道ruby 2.0.0
来自哪里。但是现在,我应该卸载并删除1.9.2
。