从命令行执行 ruby 方法
Execute ruby method from command-line
我在文件 test_class.rb 中的 Ruby 中有以下 class:
class TestClass
def test_verify_one
# DO SOME
end
def test_verify_two
# DO SOME
end
end
为了执行这个 class 我向终端发送了两个参数,ENVIRONMENT 和 LANGUAGE。
所以...从我使用的终端呼叫:
ruby test_class.rb ENVIRONMENT LANGUAGE
这会执行两种方法。
我只想执行一个。
我尝试了以下方法:
ruby -r "test_class.rb" -e "TestClass.test_verify_one" ENVIRONMENT LANGUAGE
但它不起作用。
你能帮帮我吗?
在与 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
#...
如果您希望第一个方法接受传递给它的变量,您需要定义第一个方法接受两个变量,如下所示:
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
我在文件 test_class.rb 中的 Ruby 中有以下 class:
class TestClass
def test_verify_one
# DO SOME
end
def test_verify_two
# DO SOME
end
end
为了执行这个 class 我向终端发送了两个参数,ENVIRONMENT 和 LANGUAGE。
所以...从我使用的终端呼叫:
ruby test_class.rb ENVIRONMENT LANGUAGE
这会执行两种方法。
我只想执行一个。
我尝试了以下方法:
ruby -r "test_class.rb" -e "TestClass.test_verify_one" ENVIRONMENT LANGUAGE
但它不起作用。
你能帮帮我吗?
在与 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
#...
如果您希望第一个方法接受传递给它的变量,您需要定义第一个方法接受两个变量,如下所示:
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