我正在使用ruby中的游戏服务器,在测试期间,我无法单独测试组件。我没有从我的启动器,只是服务器获得输出,所以我评论了服务器的初始化 - 但是eclipse仍显示服务器的输出!
然后我去了命令行,假设eclipse正在查看错误的文件(git之前已将其搞砸了,但正如您所看到的,堆栈跟踪显示Server.rb
正在完整地执行第5行:require_relative 'Server'
:
这是文件的文本内容:
class Launcher
puts "File saved at #{File.mtime($0)}"
require_relative 'Server'
require_relative 'Game'
#STDOUT.sync = true
puts "Launcher started"
#server = Server.new
print "server made"
game = Game.new
#serverThread = Thread.new{server.start()}
gameThread = Thread.new{game.start()}
while (running)
print "Stop? "
input = gets.chomp
if (input.equals?("yes"))
running = false
end
end
server.stop
game.stop
gameThread.join
serverThread.join
end
和终端输出:
C:\Users\gossfunkel\git\citadelserver\RubyCitadelServer>ruby Launcher.rb
File saved at 2013-06-22 18:16:44 +0100
Server starting up at 2013-06-22 18:16:47 +0100...
C:/Users/gossfunkel/git/citadelserver/RubyCitadelServer/Server.rb:20:in `recvfro
m': Interrupt
from C:/Users/gossfunkel/git/citadelserver/RubyCitadelServer/Server.rb:2
0:in `run'
from C:/Users/gossfunkel/git/citadelserver/RubyCitadelServer/Server.rb:1
5:in `start'
from C:/Users/gossfunkel/git/citadelserver/RubyCitadelServer/Server.rb:3
0:in `<class:Server>'
from C:/Users/gossfunkel/git/citadelserver/RubyCitadelServer/Server.rb:1
:in `<top (required)>'
from Launcher.rb:5:in `require_relative'
from Launcher.rb:5:in `<class:Launcher>'
from Launcher.rb:1:in `<main>'
如果没有发生这种情况,我该如何要求文件,应该是吗?
答案 0 :(得分:0)
如果没有看到课程,我无法分辨,但我猜是
game.start
做的比你想象的要多,并为自己启动服务器
正如您的主题所示,您正在运行与您正在编辑的文件不同的文件(或者在更改后不保存文件)。通过在程序顶部放置一个明显的puts
进行检查。像
puts "File saved at #{File.mtime($0)}"
应该做的伎俩
经过讨论,似乎有第三种选择。 Server.pm
中的代码创建并运行服务器以及定义类。您需要删除require
以及使用Server
类的行。