0

저는 배포 시스템의 cron 작업을 대체하기 위해 rufus 스케줄러를 사용하고 응용 프로그램이 배포시로드 될 때 이러한 작업을 시작합니다.레일 레이크 태스크 호출 : 환경 태스크, 이니셜 라이저 파일

이제이 scheduler.rb가 응용 프로그램 루트 디렉토리의 config/initializers 디렉토리에 있습니다.

scheduler caught exception : 
Don't know how to build task 'environment' 
/home/karthik/.rvm/gems/jruby-1.5.2/gems/rake-0.8.7/lib/rake.rb:1728:in `[]' 
/home/karthik/.rvm/gems/jruby-1.5.2/gems/rake-0.8.7/lib/rake.rb:605:in `invoke_prerequisites' 

곳 '환경': 이제

require 'rufus/scheduler' 
require 'rubygems' 
require 'rake' 

load File.join(RAILS_ROOT,'lib','tasks','tempfile.rake') 

temp_files_cleaning_scheduler = Rufus::Scheduler.start_new 

temp_files_cleaning_scheduler.cron '*/1 * * * *' do 
    Rake::Task["tempfile:delete_all"].reenable 
    Rake::Task["tempfile:delete_all"].invoke 
end 

내가 응용 프로그램 서버를 시작할 때, 나는 아래와 같은 오류 메시지가 :

scheduler.rb 파일의 내용은 다음과 같습니다 내가 호출하는 작업 "tempfile : delete_all"에 대한 종속 작업입니다. 그리고 이것 : 환경 태스크는 railties/lib/tasks/misc.rake에 정의되어 있습니다.

이 misc.file에 경로를 하드 코딩하여로드하고 싶지 않습니다. 이 문제를 해결할 더 깨끗한 방법이 있습니까?

감사합니다.

+0

저는 rufus를 사용해 보았지만 아무런 문제가 없었습니다. 그리고 저는 항상 문제가 있습니다. 희망을 도울 수 있습니다. – s84

+0

가서 mofukin 대답을 받아 들여 누군가가 도움을 줄 것입니다. ' – s84

+1

하지만 진지하게, 저는 명성이 필요합니다. 여러분이 여기있는 모든 사람들을 도우며 적어도 몇 가지 대답을 확인해 주어야합니다. – s84

답변

1

"lib/tasks/tempfile.rake"에 require 문이 없기 때문에 Rakefiles에로드되지 않는 정의가 더 필요한 것 같습니다.

내가이 명령 줄에서 작동하는 가정, 그렇다면, 당신은 두 가지 옵션이 있습니다

  1. 가이 앱의 주요 Rakefile,로드를 모두 TEH 필요는 다음과 같습니다

    load File.join(RAILS_ROOT,'lib','tasks','tempfile.rake')

  2. 그냥 콘솔에서 if라고 부릅니다.

    system('rake tempfile:delete_all')

희망 하시겠습니까?

+0

감사합니다. – karthiks