Frage

Ich habe eine Rails 2.0.2 Anwendung mit einem postgresql db läuft. Die Maschine wird Daten über einen TCP-Port empfangen. Ich habe bereits einen Arbeits Rubin multithreaded TCP-Server codierte die Anfragen zu erhalten, aber ich brauche diesen Code neben meiner Rails-Anwendung ausgeführt werden.

Also ich denke, ich muß wissen, wie man einen neuen Prozess in Rails zu überbrücken, oder wie man einen Worker-Thread erstellen, die meine Gewinde TCP-Server-Schleife ausgeführt werden. Mein Rubin TCP-Server Zugriff auf Active haben könnte, aber es ist nicht notwendig (ich immer eine HTTP-Anforderung erstellen, um die empfangenen Daten an den ursprünglichen Rails Server Posting)

War es hilfreich?

Lösung

Warum kompliziert? Führen Sie einfach die Anwendungen - Ihr TCP-Server und die Rails-Anwendung -. Seite an Seite

Entweder das Modell Tier ziehen (, und Active) in Ihren TCP-Server (SVN :: Äußerlichkeiten oder Kolben könnte gut für die Arbeit) und die Kommunikation lassen zwischen den beiden Anwendungen über die Datenbank geschehen, oder die Rails-Anwendung lassen die " Master“und mit ihm über HTTP kommunizieren, wie Sie vorschlagen.

Um eine Ruby-Anwendung in einem Windows-Dienst zu aktivieren, finden Sie in der win32-service gem erhältlich von win32utils Projekt: http: //rubyforge.org/projects/win32utils/

Andere Tipps

Ich brauche den TCP-Server als Dienst auf einem Windows 2003 Server ausgeführt werden. Ich benutze den mongrel_service Rails als Dienst zu laden, und ich weiß nicht, einen Weg, das gleiche für reinen Ruby-Code zu tun. Wenn ich könnte meine tcp-Server erhalten gestartet, wenn der Computer startet, ich in Ihre Lösung aussehen wird (was doch ziemlich gut scheint).

Sie machen nicht Ihre Rails-Anwendung für den Zustand der TCP-Server-Anwendung verantwortlich. Es ist wirklich nicht sehr gut geeignet, um das zu tun - und es gibt wahrscheinlich keinen Grund, dass sie miteinander in absolutem Lock-Step gestartet werden müssen. Verwenden Sie monit oder etwas beiden Serverprozesse zu überwachen.

Es ist unmöglich, mit Sicherheit zu sagen, ohne mehr von Ihrer App-Architektur zu wissen, aber ich würde mit Active und die Datenbank vorschlagen zwischen Ihren Servern anstelle von HTTP zu kommunizieren. Auf diese Weise, auch wenn Ihre Rails-Anwendung ist nach unten aus irgendeinem Grund Ihre anderen Server kann noch verarbeiten Anfragen. Es wird wohl auch ein bisschen flotter sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top