Удивительное рядом, или распределённые приложения на ruby

Posted on February 15, 2007
Некоторое время назад я пробовал себя в написании распределённых приложений ... всё закончилось довольно скучно и костылестроительно ... а сегодня читая мануалы по руби наткнулся на замечательную вещь - DRB. Итак:

Руби имеет собственный протокол для передачи между клиентом и сервером druby
Рассмотрим кратенький экзампл из мануала:
Сервер:

  require 'drb/drb'

  # The URI for the server to connect to
  URI="druby://:8787" #принимаем по всем интерфейсам на порт 8787

  class TimeServer
    def get_current_time
      return Time.now
    end
  end

  #Объект для экспорта
  FRONT_OBJECT=TimeServer.new

  $SAFE = 1   # Эвал нам не нужен, пока какой-то урод не прислал `rm -rf /`

  #Стартуем сервер
  DRb.start_service(URI, FRONT_OBJECT)
  # И ждём пока drb не завершился
  DRb.thread.join

Теперь код клиента:

  require 'drb/drb'

  # Куда цепляться
  SERVER_URI="druby://localhost:8787"

 #Стартуем сервер для ловли колобков (callback) ;) 
 DRb.start_service

  timeserver = DRbObject.new_with_uri(SERVER_URI)
  puts timeserver.get_current_time
И вуаля, получаем текущее время на сервере
В следующий раз я напишу о callbacks и передаче объектов