【问题标题】:undefined method `to_a' for "include Rubeus::Swing\n":String"include Rubeus::Swing\n":String 的未定义方法 `to_a'
【发布时间】:2013-04-26 20:17:42
【问题描述】:

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

jruby -S gem install rubeus
bundle install

然后当我执行时:

include Rubeus::Swing

我收到此错误:

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

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

我该如何解决这个问题?


代码:

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

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

更新

看来问题出在jirb上,我将代码保存在一个文件中,然后用jruby运行代码,一切顺利……我很困惑,jirb有什么问题?

【问题讨论】:

  • 您是否正在执行包含命令?
  • 是的,我正在执行包含命令
  • 抱歉,我的意思是具体在哪里?
  • 在 jirb 中,在需要 rubeus 之后,我的意思是主块
  • 你能发布整个命令和输出吗?我不明白为什么要将包含行转换为数组。

标签: ruby gem jruby


【解决方案1】:

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

$ irb-jruby-1.7.3 irb(main):001:0> 需要“rubeus” => 真 irb(主):002:0> 1 NoMethodError:“1\n”的未定义方法“to_a”:字符串

当以非交互方式解释脚本时,一切似乎都很好。一种解决方法是简单地将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。

【讨论】:

  • 我也必须输入两次...奇怪:D
猜你喜欢
  • 1970-01-01
  • 2023-04-09
  • 1970-01-01
  • 2012-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-10
相关资源
最近更新 更多