Ruby require_relative执行脚本?

问题描述 投票:0回答:1

我正在使用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>'

我如何要求没有这种情况的文件,应该吗?

ruby windows eclipse require relative-path
1个回答
0
投票

我不能不看这些课就知道,但我猜都是这样>

  • [game.start的工作量超出您的想象,并且正在为服务器本身启动服务器

  • 正如您所建议的那样,您正在运行的文件与您正在编辑的文件不同(或在文件更改后不保存)。通过在程序顶部放置一个明显的puts进行检查。有点像

puts "File saved at #{File.mtime($0)}"

应该做的把戏

  • 经过讨论,似乎还有第三种选择。 Server.pm中的代码创建并运行服务器以及定义该类。您需要删除require以及使用Server类的行。

  • © www.soinside.com 2019 - 2024. All rights reserved.