我在Ruby中的 test_class.rb 文件中有以下类:
class TestClass
def test_verify_one
# DO SOME
end
def test_verify_two
# DO SOME
end
end
要执行此类,我将两个参数发送到终端,ENVIRONMENT和LANGUAGE。
所以...从终端呼叫我使用:
ruby test_class.rb ENVIRONMENT LANGUAGE
这会执行两种方法。
我只想执行一个。
我尝试了以下内容:
ruby -r "test_class.rb" -e "TestClass.test_verify_one" ENVIRONMENT LANGUAGE
但它不起作用。
你能帮助我吗?
答案 0 :(得分:2)
在与test_class.rb
相同的文件夹中,使用以下命令语法运行ruby
命令:
ruby -I . -r "test_class" -e "TestClass.test_verify_one" arg1 arg2
打破这个命令我们得到:
-I .
在$ LOAD_PATH中包含当前目录,以便我们可以使用require
-r
需要$ LOAD_PATH中名为test_class
的文件。这是可能的,因为我们在上面的加载路径中包含了当前目录(.rb扩展名在这里是可选的)。
-e
与您提供的相同,请评估以下代码。
现在,如果我们在该方法中调用ARGV
,我们应该在不同的行中arg1
和arg2
:
#...
def self.test_verify_one
puts ARGV
end
#...
答案 1 :(得分:0)
如果你想让你的第一个方法获取你传递给它的变量,你需要定义你的第一个方法来获取两个变量,如:
class TestClass
def test_verify_one (var1, var2)
# DO SOME
end
def test_verify_two
# DO SOME
end
end
然后你需要在你的第二个条件中放入一个条件,使它只能在你想要它的条件下执行......或者只是在你现在不需要的时候将它注释掉。因此,例如,如果您只想在未传入变量时触发测试2,那么您的代码将如下所示:
class TestClass
def test_verify_one (var1, var2)
# DO SOME
end
def test_verify_two (var1, var2)
if (var1 and var2) defined? nil
# DO SOME
end
end