2013-04-11 3 views
0

Nginx로 작업 환경에서 젬을 Delayed_Job_Active_Record gem 구현하는 데 문제가 있습니다. 사용자가 '문의'양식을 제출, 관련 컨트롤러 액션은 Nginx에 의해 호출되는 코드의 다음 줄은 실패Nginx를 사용하는 경우 Delayed_Job NoMethodError

@contact.delay.send_contact_form 

을 관련 방법 인 경우 :

def send_contact_form 
    ContactMailer.contact_us(self).deliver 
end 


개발 봉투 : OK

  • 내 로컬 컴퓨터에서 Webrick이 제공하는 페이지가 있습니다. 모든 것이 잘 실행되고, 지연된 작업은 '지연된 작업 (Delayed_Jobs)'테이블을 거쳐 전자 메일이 전송됩니다.


생산 봉투 - 레일 콘솔 :

  • 내가 @contact을 만들고 수동으로 @contact.delay.send_contact_form를 호출하면 서버에서 확인, 지연 작업이 지연된 작업 테이블을 통해 이동 및 이메일입니다 보냈습니다.


생산 봉투 -에 WEBrick은 : OK 난에 WEBrick 서버 I와 @contact에 대한 데이터를 입력하는 웹 인터페이스를 통해 다음 제출 레일을 서버에서

  • 을 시작하는 경우 작업이 지연된 작업 테이블을 통과하고 전자 메일이 전송됩니다.


생산 봉투 - Nginx의 : 오류 응용 프로그램이 현재 Nginx에 의해 제공됩니다

  • .
  • Nginx를 통해 인터페이스를 방문하여 @contact의 데이터를 입력하고 페이지를 제출하십시오.

    NoMethodError :

  • 제조 로그는 (상기 라인을 참조) 제어기 동작에 대한 다음과 같은 오류 준다 (# < 연락에 대한 정의에있어서 '지연'0x000000052962b0>)

또한 Rails, Ruby 및 Delayed_Job_Active_Record 및 Daemons 젬의 버전이 두 환경에서 모두 동일하다는 것을 확인했습니다.

나는 잠시 동안이 문제에 매달려 있기 때문에 도움을 주시면 대단히 감사하겠습니다.나는 Nginx와 함께 작동하고 'Delayed Job'과 같은 기능을 제공하는 솔루션을 찾고 싶습니다.

감사합니다.

답변

0

Unicorn/Nginx가 코드 업데이트 배포시 다시 시작되지 않아 잘못된 구성으로 남게되는 문제가있었습니다. 문제는 응용 프로그램에 Devise 및 기타 보석을 추가 할 때도 발생했습니다.

다시 시작 유니콘 :

/etc/init.d/unicorn_esg stop 
/etc/init.d/unicorn_esg start 

* unicorn_esg * 인 유니콘

이 솔루션은 초기에 다음을 (카피 스트라 노를 통해) 배포 후 VPS 쉘에 로그인하여 실행하는 것이 었습니다 내 deploy.rb 구성에 사용 된 응용 프로그램에 대한 참조.

다시 시작 Nginx에가 :

sudo service nginx restart 

다음 단계는 자동으로 각 배치의 끝에서 실행되도록 deploy.rb 스크립트의 마지막에이를 통합하는 것입니다.