user1251007 user1251007 - 1 year ago 148
Ruby Question

Call ruby function from command-line

How can I directly call a ruby function from the command-line?

Imagine, I would have this script test.rb:

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

If this script is run from the command-line (
ruby test.rb
), nothing happens (as intended).

Is there something like
ruby test.rb TestClass.test_function('someTextString')
I want to get the following output:
I got the following variable: someTextString

Answer Source

First the name of the class needs to start with a capital letter, and since you really want to use a static method, the function name definition needs to start with self..

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

Then to invoke that from the command line you can do:

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

If you instead had test_function as an instance method, you'd have:

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

then you'd invoke it with:

ruby -r "./test.rb" -e " 'hi'"
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download