In ruby, methods works the same way as c# methods do.
you can have static and instance methods.
you define methods using the "def" keyword and construct:
def MethodName (OptionalParameters) puts OptionalParameter end
for example if we have:
$ cat testscript.rb #!/usr/bin/env ruby def WelcomeMessage (a_message) puts a_message end a_string = "Hello World!" WelcomeMessage a_string
Then we will end up with:
$ ./testscript.rb Hello World!
Here, the "puts" command is the ruby equivalent of bash's "echo" command, or powershell's "write-host" command.
There are a number of other ruby commands that you can use straight from the command line. These commands are available because the kernel module is always automatically loaded.
For example here I have created an .rb file called helloworld2.rb with the following 3 methods:
[ruby]
def simple_welcome
puts "Hello"
end
puts "the simple_welcome method outputs:"
simple_welcome # notice how we call this method like a normal command.
def normal_welcome (name)
# If you want to insert a variable inside double-quotes, then you need to
# encase it in #{...} syntax
puts "Hello #{name}"
end
puts "the normal_welcome method outputs"
normal_welcome ("CodingBee")
def complex_welcome (name1, name2, name3)
puts "Hello #{name1}, #{name2}, and #{name3}"
end
puts "The complex_welcome method outputs"
complex_welcome("Tom", "Jerry", "CodingBee") # Note for some reason you have any whitespace before opening bracket.
[/ruby]
The above code outputs:
C:\RailsInstaller\Ruby1.9.3\bin\ruby.exe -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) C:/Users/Mir/RailsProjects/spec2xmlproj/helloworld2.rb the simple_welcome method outputs Hello the normal_welcome method outputs Hello CodingBee The complex_welcome method outputs Hello Tom, Jerry, and CodingBee
Any variables set in a method will be confined to that method's scope. Also a method can't access any variables outside it's scope. e.g.:
website_name = "codingbee" puts website_name def normal_welcome # puts website_name # this will output an error message, hence commented out. website_name = "google" puts website_name end normal_welcome puts website_name
This outputs:
PS C:\Temp\irb> ruby .\scope.rb codingbee google codingbee PS C:\Temp\irb>
If you want a variable accessible/settable everywhere, then you need to create a "global variable". global variables are prefixed with the dollar symbol, e.g.:
[ruby]
$website_name = 'codingbee'
puts $website_name
def normal_welcome
puts $website_name
$website_name = 'google'
end
normal_welcome
puts $website_name
[/ruby]
The above outputs:
$ ./testscript.rb codingbee codingbee google
Note: if you a method to output an object instead of using "puts" output, then simply specify the object as the last line in the method.