Weechat Ruby 插件 - 尝试要求任何 gem 会导致错误

Posted

技术标签:

【中文标题】Weechat Ruby 插件 - 尝试要求任何 gem 会导致错误【英文标题】:Weechat Ruby Plugin - Trying to require any gem results in an error 【发布时间】:2014-03-11 14:36:34 【问题描述】:

我正在尝试创建一个使用 mysql2 的插件,该插件将允许从 IRC 与数据库进行通信。

我面临的问题是我不能在插件中加入任何 gems 而不会崩溃。

require 'mysql2'
@client = nil
def weechat_init
  Weechat.register('sql', 'Ninjex', '1.0', 'GPL3', 'Execute MySQL commands: /sql <query>', '', '')
  Weechat.hook_command('sql', 'Execute MySQL database commands', '', '', '', 'sql', '')
  return Weechat::WEECHAT_RC_OK
end

def sql(data, buffer, args)
  buffer = Weechat.current_buffer
  con_flag = '-c'
  explode = args.split(' ')
  if explode[0] == con_flag
    #Weechat.buffer_set(buffer, 'localvar_set_con', explode.drop(1).join.strip)
    con_info = explode.drop(1) # ["localhost", "username", "password", "database"]
    hostname = con_info[0]
    username = con_info[1]
    password = con_info[2]
    database = con_info[3]
    @client = Mysql2::Client.new(:host => hostname, :username => username, :password => password, :database => database)
    Weechat.print(buffer, "MySQL client created!")
  else
    row_count = 0
    Weechat.command(buffer, "Sending query: #args")
    sql_res = @client.query(args)
    sql_res.each(:as => :array) |r| row_count += 1; Weechat.command(buffer, "RESULT [#row_count.to_s]: "+r.to_s)
    return Weechat::WEECHAT_RC_OK
  end
end

错误信息:

09:27:38 =!= | ruby: error while loading file "/home/ninjex/.weechat/ruby/sql.rb"
09:27:38 =!= | ruby: error: (eval):31:in `module_eval': cannot load such file -- mysql2 (LoadError)
09:27:38 =!= | ruby: error:      from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in    `require'

我要注意的一点是:

ninjex@kali:~$ ruby -v ruby 2.1.1p76 (2014-02-24 revision 45161) [i686-linux]

我使用的是 ruby​​ 2.1.1,错误输出显示它正在以下位置寻找 gem:/usr/lib/ruby/1.9.1/rubygems/

在交互式 Ruby 会话或常规 Ruby 脚本中加载 mysql2 可以成功。只有在尝试将其与微信一起应用时,我才会收到错误消息。

任何帮助将不胜感激,如果它是 gem 路径,我不知道如何更改正在加载的 gem 的路径。

【问题讨论】:

【参考方案1】:

我想通了。微信当前版本不支持 Ruby >= 2.1.x

不幸的是,修复正在运行 Weechat 女巫 Ruby

【讨论】:

以上是关于Weechat Ruby 插件 - 尝试要求任何 gem 会导致错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试IRC & freenode

如何更改微信加入/离开颜色? [关闭]

freenode configuration sasl authentication in weechat

python Weechat通知脚本

在 chef lwrp 中安装、要求和使用 ruby​​ 库

Ruby vs. PHP/插件社交网络