411 REFERENCE · Wikibooks
Ruby By Examples
Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.
The book is broken down into sections. Each section deals with a Ruby language theme, giving examples, from basic to advanced. A full list of Ruby methods can be found here.
Basics
Strings
Example-001: String Length
puts 'That is an object'.size # => prints 17
Example-002: Reversing
puts 'This is not a palindrome'.reverse # => prints 'emordnilap a ton si sihT'
Example-003: Single substitution
puts 'a banana'.sub('a', '*') # => prints '* banana'
Example-004: Global substitution
puts 'a banana'.gsub('a', '*') # => prints '* b*n*n*'
Numbers
Example-001: Use the times method to run code over and over
5.times do
puts 'Loop' # => prints 'LoopLoopLoopLoopLoop'
end
Example-002: Calculating absolute value
puts -10.abs # => prints 10
Arrays
Example-001
arr = [['0','0','0'],['0','$','0'],['0','0','0']]
puts arr[1][1]
Example-002
a = [1, 2, 3, 4].shuffle
a.each {|e| puts e}
Example-003
a = %w|this is a string array|
puts a.join(' ')
Example-004
a = (0..10).to_a
a.map! {|x| x**2}
a.each {|e| puts e} # 0, 1, 4, 9, 16...
Example-005
items = ['random', 3, Math::PI, 'items']
puts items.index(3) # 1
puts items.include?(Math::E) # false
Hashes
books = {'978-0140449266' => 'The Count of Monte Cristo',
'978-0140439243' => 'The Man in the Iron Mask'
}
puts books['978-0140439243']
# The output is 'The Man In The Iron Mask'
more_books = {}
more_books['978-1593081485'] = 'The Three Musketeers'
Operators
:: (Scope Operator)
Example-001
MR_COUNT = 0 # constant defined on main Object class
module Foo
MR_COUNT = 0
::MR_COUNT = 1 # set global count to 1
MR_COUNT = 2 # set local count to 2
end
puts MR_COUNT # this is the global constant
puts Foo::MR_COUNT # this is the local "Foo" constant
Example-002
CONST = ' out there'
class Inside_one
CONST = proc {' in there'}
def where_is_my_CONST
::CONST + ' inside one'
end
end
class Inside_two
CONST = ' inside two'
def where_is_my_CONST
CONST
end
end
puts Inside_one.new.where_is_my_CONST # out there inside one
puts Inside_two.new.where_is_my_CONST # inside two
puts Object::CONST + Inside_two::CONST # out there inside two
puts Inside_two::CONST + CONST # inside two out there
puts Inside_one::CONST # #<Proc:0xedfa98(irb):3> , reference to the procedure
puts Inside_one::CONST.call + Inside_two::CONST # in there inside two
[ ]
Example-001
a = [1, 2, 3, 4] # array creation
puts a[0] # array indexing
puts a[-1] # same as a[a.length-1]
Example-002
s = 'a meaningless string'
puts s[10] # prints 'e'
Example-003
p = proc {|arg| puts 'You called me with ' + arg.to_s}
p['a string arg'] # same as proc.call
**
+ - ! ~
* / %
<< >>
&
| ^
> >= < <=
<=> == === != =~
&&
.. ...
= ( += -= )
not
and or
Intermediate
Modules and Procedures
Classes and Methods
Names, Variables, Constants and Symbols
Advanced
Active record
Sockets
Example-001
# daytimeserver.rb
puts'========================================='
require 'socket'
puts'== daytime server =='
# Open a socket to a local daytime server, read, and print.
print TCPSocket.open('129.6.15.28', 'daytime').read
puts'========================================='
Example-002
# socketmethods.rb
require 'socket'
mySocket = TCPSocket.new( 'www.wikibook.com', 80 )
puts'==================================='
# Returns information on this connection's peer socket as a struct
# sockaddr packed into a string.
strinfo = mySocket.getpeername
puts 'strinfo: '+strinfo
# Returns true if query returns numeric address not host name.
puts BasicSocket::do_not_reverse_lookup
puts'==================================='
# Returns information on s as a struct sockaddr packed into a string.
strinfo = mySocket.getsockname
puts 'strinfo: '+strinfo
puts'==================================='
# Gets the specified socket option.
optval = mySocket.getsockopt(Socket::SOL_SOCKET,Socket::SO_REUSEADDR)
puts 'optval: '+optval.inspect
optval = optval.unpack "i"
puts 'optval: '+optval.inspect
optval = mySocket.getsockopt(Socket::SOL_SOCKET, Socket::SO_LINGER)
puts 'optval: '+optval.inspect
optval = optval.unpack "ii"
puts 'optval: '+optval.inspect
# Sets reverse_lookup status
BasicSocket::do_not_reverse_lookup=true
# Sets the specified socket option.
mySocket.setsockopt(Socket::SOL_SOCKET,Socket::SO_REUSEADDR, true)
optval = mySocket.getsockopt(Socket::SOL_SOCKET,Socket::SO_REUSEADDR)
puts 'optval: '+optval.inspect
optval = optval.unpack "i"
puts 'optval: '+optval.inspect
puts'==================================='
#
mySocket.shutdown(2) # 0 shuts down receiving, 1 sending, and 2 both.
puts 'mySocket: '+mySocket.inspect
puts'==================================='
# Returns true if query returns numeric address not host name.
puts BasicSocket::do_not_reverse_lookup
puts'==================================='
Ruby programming language
R
0%