如何从命令行直接调用ruby函数?

想象一下,我会有这个脚本test.rb:

class TestClass
    def self.test_function(some_var)
        puts "I got the following variable: #{some_var}"
    end
end

如果从命令行(ruby test.rb)运行此脚本,则不会发生任何事情(如预期的那样).

有大约ruby test.rb TestClass.test_function('someTextString')个吗?

推荐答案

首先,类的名称需要以大写字母开头,而且由于您确实想要使用静态方法,函数名定义需要以self.开头.

class TestClass
    def self.test_function(someVar)
        puts "I got the following variable: " + someVar
    end
end

然后,要从命令行调用它,可以执行以下操作:

ruby -r "./test.rb" -e "TestClass.test_function 'hi'"

如果改为使用test_function作为实例方法,那么:

class TestClass
    def test_function(someVar)
        puts "I got the following variable: " + someVar
    end
end

然后你会用以下方法调用它:

ruby -r "./test.rb" -e "TestClass.new.test_function 'hi'"

Ruby相关问答推荐

Ruby PKCS7:添加;\r〃;字节正在 destruct 解密

PDFNet:Ubuntu 16.04 和 Ubuntu 20.04 上 PDF 输出文本的词序不同

根据部分已知值判断数组内容的简洁 Rubyist 方法是什么?

有没有一种简单的方法可以在 Ruby 中获取图像尺寸?

Symfony 2assets资源过滤器异常中的指南针

如何打开(读写)或创建允许截断的文件?

在 Ruby 中,获取第一个块返回 true 的可枚举元素的最快方法是什么?

如何从正在运行的脚本进入 IRB 提示符?

将方法应用于数组/可枚举中的每个元素

将元素添加到 ruby​​ 数组返回新数组

C# ?? Ruby 中的运算符?

从Electron邮件中删除签名和回复

在 Pry 中有相当于 next 的吗?

如何从 SystemStackError 中获取回溯:堆栈级别太深?

在 Ruby 中,有没有办法使用 hash.each_with_index do |[k,v], i| 之类的东西?

如何在 ruby​​ 中进行命名捕获

如何在 gemspec 中指定最低 Ruby 版本?

Ruby 中的Monkey Patching到底是什么意思?

Ruby Activerecord IN 子句

如何在 Ubuntu 12.04 上正确安装 ruby​​ 2.0.0?