2014-12-30 4 views
1
내가 config.ru에 차단 않은 구성의 내부의 구성 코드를

와 루퍼스 - 스케줄러를 실행하는 응용 프로그램 서버를 지정합니다 기본값 인 rufus-scheduler 스레드는 앱 마스터에 생성되지만, 엔진 야드 내부의 다른 애플리케이션 서버 중 하나에서 생성되도록하고 싶습니다. before_restart.rb 안에 조건부 블록이 없어도이를 수행 할 수있는 좋은 방법이 있습니까? 설명서가 여기에 포함되지 않는 것 같습니다.는 다음과 같은 읽는시나

배포/before_restart.rb :

scheduler.every 블록

if node[:name] == "app_instance_1" 
    scheduler.every '1h' do 
    # Run cleanup job 
    end 

끝은 레이크 작업의 내부에 캡슐화해야 할 수도 있습니다. 모든 의견을 보내 주시면 감사하겠습니다. 감사.

답변

0

예약을 수행하는 별도의 미니 응용 프로그램을 사용하려면 주 응용 프로그램에서 일정을 제거하십시오.

또는

확인하여 config.ru에서 호스트 이름 :

Kernel.load('deploy/scheduling.rb') if node[:name] == "app_instance_1" 

피부 A와/before_restart.rb

또는

이렇게 많은 방법 배포에서 조건을 제거 고양이 ...

참고 :

설명서는 여기에 포함되지 않습니다.

문맥에 따라 다르기 때문입니다.

+0

불행히도'node' 변수는 config.ru에서 범위를 벗어납니다. 그리고 내부 DNS 호스트 이름이 바뀔 수 있기 때문에 호스트 이름을 식별하려고 시도하지도 않습니다. 미니 응용 프로그램이 작동하여 monit에 추가하고 응용 프로그램 인스턴스에서 실행되도록 프로비저닝 할 수 있습니다. 그것은 단지 과잉처럼 보인다. 미니 앱 루트 및 upvote가 작동하면 시도해 보겠습니다. :) –

+0

OK, 질문에 언급하지 않았습니다. 스케줄러를 실행하거나 실행하지 않도록 특정 배포를 알릴 방법이 없습니다. 스케쥴러가 초기화되고 "채워 져야"한다는 것을 나타내는 빈 파일이 있거나, 앱을 초기화/실행하지 않도록 지시하는 파일 인 inverse가있을 수 있습니다. 상상력과 두 단계 뒤로 더 넓은 그림을 얻기 위해서는 너무 어려워서는 안됩니다. – jmettraux

관련 문제