Немного более интересным примером является HTTP сервер:
require "http/server"
server = HTTP::Server.new(8080) do |context|
  context.response.content_type = "text/plain"
  context.response.print "Hello world! The time is #{Time.now}"
end
puts "Listening on http://0.0.0.0:8080"
server.listen
Приведенный код выше будет иметь смысл только если вы прочитаете всю документацию, но вы уже можете кое-чему научиться.
Вы можете подключить код из других файлов:
  require "http/server"
Вы можете определить локальную переменную без необходимости указывать ее тип:
  server = HTTP::Server.new ...
Ваша программа вызывает методы (или посылает сообщения) объектам.
  HTTP::Server.new(8000) ...
  ...
  Time.now
  ...
  puts "Listening on http://0.0.0.0:8080"
  ...
  server.listen
Вы можете использовать блоки кода, или просто блоки, которые представляют собой очень удобный способ повторного использования кода и дают возможность получить некоторые особенности из мира функционального программирования:
  HTTP::Server.new(8080) do |context|
    ...
  end
Вы легко можете создавать строки со "встроенным" контентом, который также называется интерполяция строк. Язык также предоставляет другой синтаксис для создания arrays(массивов), hashes(хэшей), ranges(диапазонов), tuples(тьюплов/кортежей) и прочего:
  "Hello world! The time is #{Time.now}"