我正在尝试创建一个使用mysql2的插件,它将允许从IRC到数据库的通信。
我面临的问题是,我不能在不崩溃的情况下要求任何宝石到插件中。
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]
我使用的是Ruby2.1.1,错误输出显示它在以下位置查找gem:/usr/lib/ruby/1.9.1/rubygems/
在交互式mysql2会话中或在常规Ruby脚本中成功加载Ruby。只有在尝试使用weechat应用时,我才会收到错误。
感谢任何帮助,如果是gem路径,我不知道如何更改正在加载的gem的路径。
发布于 2014-03-13 19:16:56
我想通了。Weechat当前版本不支持Ruby >= 2.1.x
不幸的是,修复是运行Weechat巫师Ruby <= 1.9.3
https://stackoverflow.com/questions/22328913
复制相似问题