Необходимо запустить TCP-сервер помимо приложения Rails - PullRequest
1 голос
/ 25 сентября 2008

У меня есть приложение Rails 2.0.2, работающее с базой данных postgresql. Машина будет получать данные через порт TCP. Я уже кодировал работающий многопоточный tcp сервер ruby ​​для получения запросов, но мне нужен этот код для запуска вместе с моим Rails-приложением.

Так что, я думаю, мне нужно знать, как охватить новый процесс внутри Rails или как создать рабочий поток, который будет запускать мой многопоточный серверный цикл tcp. Мой ruby ​​tcp-сервер может иметь доступ к ActiveRecord, но это необязательно (я всегда могу создать http-запрос, отправив полученные данные на исходный сервер Rails)

Ответы [ 3 ]

1 голос
/ 25 сентября 2008

Зачем все усложнять? Просто запустите приложения - ваш TCP-сервер и приложение Rails - рядом.

Либо подключите уровень модели (и ActiveRecord) к вашему TCP-серверу (svn :: externals, либо Piston может подойти для этого), и пусть связь между двумя приложениями происходит через базу данных, либо пусть приложение Rails будет мастер "и общаться с ним через HTTP, как вы предлагаете.

Чтобы превратить приложение Ruby в службу Windows, см. Гем win32-service, доступный в проекте win32utils: http://rubyforge.org/projects/win32utils/

0 голосов
/ 26 сентября 2008

Не делайте ваше приложение Rails ответственным за состояние приложения сервера TCP. Это на самом деле не очень хорошо подходит для этого - и, вероятно, нет никаких причин, по которым их нужно начинать в полной замкнутости друг с другом. Используйте monit или что-то еще для мониторинга обоих процессов сервера.

Невозможно сказать наверняка, не зная больше архитектуры вашего приложения, но я бы предложил использовать ActiveRecord и базу данных для связи между вашими серверами вместо HTTP. Таким образом, даже если ваше приложение Rails по какой-то причине не работает, ваш другой сервер все еще может обрабатывать запросы. Это также, вероятно, будет немного резче.

0 голосов
/ 25 сентября 2008

Мне нужен tcp-сервер для запуска в качестве службы на сервере Windows 2003. Я использую mongrel_service для загрузки Rails как сервиса, и я не знаю способа сделать то же самое для чистого кода ruby. Если бы я мог запустить мой tcp сервер при загрузке компьютера, я посмотрю на ваше решение (что, тем не менее, кажется довольно хорошим).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...