阻止Ruby脚本运行

阻止Ruby脚本运行,ruby,Ruby,每当我在不同的ruby文件中加载ruby类文件时,它都会执行导入的类文件。该类文件当前在类定义之外实例化并调用方法。有没有办法阻止导入的文件执行?当我运行单元测试时也会发生这种情况。我尝试了以下方法: load 'file.rb' require_relative 'file' require "./file.rb" class Nim # some stuff end if __FILE__ == $0 nim = Nim.new(Player.new) nim.start_g

每当我在不同的ruby文件中加载ruby类文件时,它都会执行导入的类文件。该类文件当前在类定义之外实例化并调用方法。有没有办法阻止导入的文件执行?当我运行单元测试时也会发生这种情况。我尝试了以下方法:

load 'file.rb'
require_relative 'file'
require "./file.rb"
class Nim
  # some stuff
end

if __FILE__ == $0
  nim = Nim.new(Player.new)
  nim.start_game
  nim.configBoard
end
多谢各位

下面是我在类文件中的内容(我正在尝试导入):


您也可以更改文件,如下所示:

load 'file.rb'
require_relative 'file'
require "./file.rb"
class Nim
  # some stuff
end

if __FILE__ == $0
  nim = Nim.new(Player.new)
  nim.start_game
  nim.configBoard
end

只有当文件作为脚本运行而不是作为库加载时,才会执行这些方法调用。

您也可以更改文件,如下所示:

load 'file.rb'
require_relative 'file'
require "./file.rb"
class Nim
  # some stuff
end

if __FILE__ == $0
  nim = Nim.new(Player.new)
  nim.start_game
  nim.configBoard
end


只有当文件作为脚本运行而不是作为库加载时,才会执行这些方法调用。

如果不想运行文件,导入文件有什么意义?如果它不运行,它将一事无成。文件将不会定义任何类、变量或方法,因为它从未运行过。您应该更改该文件,使其不具有超出您需要的特定类定义之外的方法调用。您能给我举个例子吗。我的类文件在运行时需要打印必要的信息。有没有办法只导入类而不执行函数调用?有人告诉我有,但没法让它工作。你现在在里面有什么?这对于找出问题所在(将其编辑到您的问题中)非常关键。您是否控制要导入的文件?如果是这样,除了声明类之外,您不应该做任何事情。通常,您会在一个文件中声明Nim类,并将“客户端”代码(实例化和运行类的代码)保留在一个单独的文件中。如果不想运行该文件,导入该文件有什么意义?如果它不运行,它将一事无成。文件将不会定义任何类、变量或方法,因为它从未运行过。您应该更改该文件,使其不具有超出您需要的特定类定义之外的方法调用。您能给我举个例子吗。我的类文件在运行时需要打印必要的信息。有没有办法只导入类而不执行函数调用?有人告诉我有,但没法让它工作。你现在在里面有什么?这对于找出问题所在(将其编辑到您的问题中)非常关键。您是否控制要导入的文件?如果是这样,除了声明类之外,你不应该做任何事情。通常,你会在一个文件中声明你的Nim类,并将“客户机”代码(实例化和运行你的类的代码)保存在一个单独的文件中。这正是我要找的!!!非常感谢。我在某处看到过这个,但不知道怎么用。非常感谢。对不起,我不能胜过你,因为我没有足够的声誉。再次感谢!我仍然不同意这样做是正确的。。。类文件应该只声明该类,并且可能需要依赖项。没有别的了。@nzifnab我同意。将很快更新答案,以反映未来的读者。这正是我所寻找的!!!非常感谢。我在某处看到过这个,但不知道怎么用。非常感谢。对不起,我不能胜过你,因为我没有足够的声誉。再次感谢!我仍然不同意这样做是正确的。。。类文件应该只声明该类,并且可能需要依赖项。没有别的了。@nzifnab我同意。将很快更新答案,以反映未来的读者。