【发布时间】:2014-01-09 14:10:17
【问题描述】:
我在 github (/ninjex/rubot) 上编写了一个 Ruby IRC 机器人,它在我刚购买的专用服务器上与 MySQL 有一些冲突的输出。
首先,我们在 MySQL 文件夹(在 .gitignore 中)中建立了与数据库的连接,该文件夹类似于以下代码块。
@con = Mysql.new('localhost', 'root', 'pword', 'db_name')
然后我们有一个实际的函数来查询数据库
def db_query
que = get_message # Grabs query from user i.e,./db_query SELECT * FROM words
results = @con.query(que) # Send query through the connection i.e, @con.query("SELECT * FROM WORDS")
results.each {|x| chan_send(x)} # For each row returned, send it to the channel via
end
在我的本地机器上,运行命令时:
./db_query SELECT amount, user from words WHERE user = 'Bob' and word = 'hello'
我以类似数组的方式在 IRC 中接收输出:["17", "Bob"] 其中 17 是数量,Bob 是用户。
但是,在我的专用服务器上使用相同的函数会导致输出如下:17Bob 我尝试了许多代码更改,并尝试将数据解析为它自己的变量,但似乎@987654327 @ 以单个变量的形式出现,因此无法解析为数组之类的东西,然后我可以使用它来正确发送数据。
在我的本地机器和专用服务器上这对我来说似乎很奇怪,因为我期望输出首先将 17 发送到 IRC,然后 Bob 喜欢:
17
Bob
对于所有的功能和来源,你可以查看我的 github /Ninjex/rubot,但是你可能需要安装一些 gem。
【问题讨论】:
-
我为您创建了一个拉取请求,github.com/Ninjex/Rubot/pull/1,它公开了一些可用于简化代码的 ruby 习惯用法。它并不完全是主题,但应该鼓励您更多地探索标准库。
-
是的,我第一次使用 Ruby 编码时不熟悉的大多数习语。我承认我开始这个项目是在我刚接触 Ruby 时开始的,而且我来自 PHP 编程。然而,我不知道 Ruby 不需要 return 关键字,很好。感谢您的帮助,我期待在本周末修复大量多余的代码并转换为 mysql2。
-
如果您还有任何问题,请联系我。我很乐意为您指明正确的方向。
-
我非常感谢您在整个过程中的帮助!我觉得自己像个白痴,我终于找到了导致的问题。我已经在专用服务器上更新了我的 Ruby 版本,但我设法滑倒并没有将其配置为使用最新安装,所以它运行的是 1.08 而不是 1.9.3 一旦我更改了设置,它就像一个魅力。我非常感谢您的帮助。有什么方法可以让我就一些小问题与您联系,以推动我在编程方面更进一步,成为一名更好的程序员。感谢您一直以来的耐心等待!
-
我为我们开了一个聊天室。让我知道这是否有效。
标签: mysql ruby dedicated-server