문제

postgresql db로 실행되는 Rails 2.0.2 애플리케이션이 있습니다.기기는 TCP 포트에서 데이터를 수신합니다.요청을 수신하기 위해 작동하는 Ruby 다중 스레드 TCP 서버를 이미 코딩했지만 Rails 앱과 함께 실행하려면 이 코드가 필요합니다.

그래서 저는 Rails 내부에서 새로운 프로세스를 확장하는 방법이나 스레드된 TCP 서버 루프를 실행할 작업자 스레드를 생성하는 방법을 알아야 할 것 같습니다.내 Ruby TCP 서버는 ActiveRecord에 액세스할 수 있지만 반드시 그럴 필요는 없습니다. (항상 http 요청을 생성하여 수신된 데이터를 원래 Rails 서버에 게시할 수 있습니다.)

도움이 되었습니까?

해결책

왜 복잡한 일입니까? 응용 프로그램 (TCP 서버 및 Rails 응용 프로그램)을 나란히 실행하십시오.

모델 계층 (및 ActiveRecord)을 TCP 서버 (SVN :: Externals 또는 Piston)로 끌어 당기고 두 응용 프로그램 간의 통신이 데이터베이스를 통해 발생하도록하거나 Rails 응용 프로그램이 "마스터"및 "마스터"및 당신이 제안한대로 HTTP를 통해 그것과 통신하십시오.

루비 응용 프로그램을 Windows 서비스로 바꾸려면 win32-service 보석에서 구할 수 있습니다 win32utils 프로젝트: http://rubyforge.org/projects/win32utils/

다른 팁

Windows 2003 서버에서 서비스로 실행하려면 TCP 서버가 필요합니다. Mongrel_Service를 사용하여 레일을 서비스로로드하고 Pure Ruby 코드에 대해 동일한 방법을 모릅니다. 컴퓨터 부츠가있을 때 TCP 서버를 시작할 수 있다면 솔루션을 살펴 보겠습니다 (그럼에도 불구하고 꽤 좋아 보입니다).

Rails 앱이 TCP 서버 앱의 상태를 책임지게 만들지 마세요.실제로 그렇게 하는 데는 그다지 적합하지 않습니다. 그리고 서로 완전히 고정된 상태로 시작해야 할 이유도 없을 것입니다.monit 등을 사용하여 두 서버 프로세스를 모두 모니터링하세요.

앱 아키텍처에 대해 더 많이 알지 않고는 확실히 말할 수 없지만 HTTP 대신 ActiveRecord와 데이터베이스를 사용하여 서버 간 통신을 하는 것이 좋습니다.이렇게 하면 어떤 이유로 Rails 앱이 다운되더라도 다른 서버에서 계속 요청을 처리할 수 있습니다.아마도 조금 더 빨라질 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top