1# A simple Ruby class demonstration
 2
 3class Person
 4  attr_accessor :name, :age
 5
 6  def initialize(name, age)
 7    @name = name
 8    @age = age
 9  end
10
11  def introduce
12    puts "Hi, I'm #{@name} and I am #{@age} years old."
13  end
14
15  def can_vote?
16    @age >= 18
17  end
18end
19
20# Module definition
21module Greeter
22  def self.say_hello(name)
23    puts "Hello, #{name}!"
24  end
25end
26
27# Main execution
28if __FILE__ == $0
29  alice = Person.new("Alice", 25)
30  alice.introduce
31
32  if alice.can_vote?
33    puts "#{alice.name} can vote."
34  else
35    puts "#{alice.name} cannot vote."
36  end
37
38  Greeter.say_hello("Bob")
39
40  # Array and block
41  numbers = [1, 2, 3, 4, 5]
42  squared = numbers.map { |n| n * n }
43  puts "Squared numbers: #{squared.inspect}"
44
45  # Hash
46  config = {
47    :env => "production",
48    :retries => 3,
49    :timeout => 500
50  }
51  
52  puts "Environment: #{config[:env]}"
53end