我正在使用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>'
我如何要求没有这种情况的文件,应该吗?
我不能不看这些课就知道,但我猜都是这样>
[game.start
的工作量超出您的想象,并且正在为服务器本身启动服务器
正如您所建议的那样,您正在运行的文件与您正在编辑的文件不同(或在文件更改后不保存)。通过在程序顶部放置一个明显的puts
进行检查。有点像
puts "File saved at #{File.mtime($0)}"
应该做的把戏
经过讨论,似乎还有第三种选择。 Server.pm
中的代码创建并运行服务器以及定义该类。您需要删除require
以及使用Server
类的行。