2015-02-06 148 views
1

只要我在不同的ruby文件中加载ruby类文件,它就会执行导入的类文件。这个类文件当前在类定义之外实例化和调用方法。有没有办法阻止导入的文件执行?当我运行单元测试时也会发生这种情况。我试过以下内容:阻止运行Ruby脚本

load 'file.rb' 
require_relative 'file' 
require "./file.rb" 

谢谢。

下面是我在类文件(即我试图进口):

class Nim 
    #some stuff 
end 

nim = Nim.new(Player.new) 
nim.start_game 
nim.configBoard 
+1

如果你不想运行它,那么导入文件会有什么意义呢?如果它没有运行,它将会做*没有*。将不会有文件定义的类或变量或方法,因为它从不运行。您应该更改该文件,以便它不具有您需要的特定类定义之外的方法调用。 – nzifnab 2015-02-06 00:21:12

+0

你能告诉我一个例子吗?我的班级文件在运行时需要打印必要的信息。有没有办法只导入类而不执行函数调用?有人告诉我,有但无法让它工作。 – JOH 2015-02-06 00:26:27

+1

你目前在那里有什么?这对于解决你的问题至关重要(将其编辑到你的问题中) – Gareth 2015-02-06 00:27:48

回答

4

你可以改变你的文件过如下所示:

class Nim 
    # some stuff 
end 

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

这不仅会如果文件作为脚本运行而不是作为库加载,则执行这些方法调用。

+0

正是我期待的!谢谢!我看到这个地方,但不知道如何使用它。谢谢! – JOH 2015-02-06 01:12:10

+0

对不起,我无法赞成你,因为我没有足够的声望。再次感谢! – JOH 2015-02-06 01:16:15

+0

虽然☺ – ptierno 2015-02-06 01:32:18