【发布时间】: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 的路径。
【问题讨论】:
标签: ruby rubygems gem irc mysql2