undefined方法`to_a'表示“包含Rubeus :: Swing \ n”:String

时间:2013-04-26 20:17:43

标签: ruby gem jruby

我使用以下命令安装了rubeus:

jruby -S gem install rubeus
bundle install

然后当我执行时:

include Rubeus::Swing

我收到此错误:

undefined method `to_a' for "include Rubeus::Swing\n":String

所以我认为gem安装了错误的版本,因为Ruby 1.9.x中不再支持方法to_a用于字符串

我该如何解决这个问题?


代码:

require 'rubygems'
require 'java'
require 'rubeus'

include Rubeus::Swing #it's where everything crashes :-)

更新

似乎问题在于jirb,我将代码保存在一个文件中并用jruby运行代码,一切顺利......我很困惑,jirb有什么问题?

1 个答案:

答案 0 :(得分:2)

我不知道为什么,但我可以确认Rubeus打破了jirb:

$ irb-jruby-1.7.3
irb(main):001:0> require 'rubeus'
=> true
irb(main):002:0> 1
NoMethodError: undefined method `to_a' for "1\n":String

当非交互式解释脚本时,事情似乎正常。一种解决方法是简单地将to_a添加回String

class String
  def to_a
    lines.to_a
  end
end
# => nil
require 'rubeus'
# => true
include Rubeus::Swing
# => Object

到目前为止,我注意到的唯一问题是require 'rubeus'仍然以第二种方式打破jirb:我现在需要按Enter键两次输入。