2011-03-02 5 views
3

Rails가 자동으로 redis를 시작하고 (다른 프로젝트, mongod, mysql-server 등등) 자동으로 resque를 시작하고 싶습니다. 다음 경우에 해당합니다.`rails server` 명령으로 필요한 추가 서비스 (resque, redis)를 시작하십시오.

  • 개발 서버 rails server을 시작할 때.

    • 레이크 RSpec에, RSpec에/사양 실행 테스트를 : 다음과 같은 경우 이미 서비스를 실행하고, 그렇지 않으면 그들도 시작 실행이 감지되면

    또한, 그것은 좋은 것입니다.

  • 시작할 때 rails console.

rails server을 종료 할 때 시작된 하위 서비스도 종료해야합니다.

이러한 추가 시작 스크립트의 올바른 위치는 무엇입니까?

그리고 이들이 프로덕션 환경에서 시작되는 것을 피하는 방법 (모든 곳에서 /etc/init.d 서비스를 실행하는 곳)은 어떻게해야합니까?

답변

2

이러한 기본 제공 작업은 이미 레이크 작업으로 많이 제공됩니다.

모든 작업을 수행하는 마스터 레이크 작업을 만들 수 있습니다. "레이크 resque : 스케줄러 :

예를 들어, resque와 함께, 당신은"시작 레이크 resque "얻을 시작"등을

당신은 일반적인 만들 수 있습니다 "나머지에 따라 시작"작업을. 마찬가지로 "중지"작업은 모든 것을 종료합니다.

그래서 당신은 할 것이다 :이 또한 매우 당신이 다른 곳에서 코드를 배포 끝날 때, 카피 스트라 노에서 사용하는 데 사용됩니다

rake start # starts all associated processes 
rake stop # stops them all 

. 갈퀴 작업은 Capistrano에서 전화하기가 매우 쉽습니다.

1

나는 외부 스크립트에서 그렇게하는 것이 더 낫다고 생각합니다. 레일 서버 명령에서 코드를 시험해보기가 정말 힘들 수 있습니다.

예를 들어, 1 년 후에 nez 개발자가 프로젝트에옵니다. 레일 서버가 다른 응용 프로그램을 백그라운드로 실행하면 그는 방향을 잃을 수 있습니다.

동일한 생각으로 레일즈 env에서 코드를 유지해야합니다. 조금 까다 롭습니다. 독립적 인 스크립트를 유지하는 것이 더 유용 할 수 있습니다.

스크립트 디렉토리에 스크립트를 추가 할 수 있습니다. 그것은 좋은 징계입니다. 그러나 당신이 그것을하지 않는 매뉴얼로 명령을 내릴 때가 아닙니다.

+1

간단한 시작 스크립트는 좋은 해결책처럼 들립니다. 모범 사례가 있습니까? ./scripts/services와 같은 이름을 짓고'레일 서비스 '라고 불렀습니까? – berkes

+1

스크립트/서비스를 만드는 것이 더 좋습니다. 쉘 스크립트 일 수 있습니다. – shingara

관련 문제