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 会导致错误的主要内容,如果未能解决你的问题,请参考以下文章
freenode configuration sasl authentication in weechat