2017-12-08 7 views
0

저는 padrino 루비 프레임 워크를 사용하여 백엔드를 개발했으며 cron 작업을 만들고 싶습니다.루비 응용 프로그램에서 cron 작업을 사용자 정의하는 방법은 무엇입니까?

이것은 내가 한 것입니다. schedule.rb 내부

  • gem 'whenever', :require => false
  • wheneverize .

every 1.minute do 
    rake "cronjob" 
end 

/tasks/cronjob.rake

H 내 사용자 정의 작업을 추가할까요? 여기에 추가하는 데는 오래 걸릴 것입니다.

속편 중단 경고 :하십시오 조건 지정자 를 (사용하지 않을 경우 필터로 인수를 여러 인수를 전달 [#

그래서 난 단지 오류가 발생하는 부분

performances = Performance.left_join(:slots, id: :slot_id).where(Sequel.~(status: ModelA::Api.settings.pending),Sequel[:slots][:from]>oneweekbefore,Sequel[:slots][:to]<onemonthafter+1.day) 
.... 

begin 
    data = {} 
    data[:from] = "** <[email protected]**.mailgun.org>" 
    data[:to] = email 
    data[:subject] = subject 
    data[:html] = render 'mails/sendemailbasedontime',:locals => { :data => localdata } 
    RestClient.post GigabitArtist::Api.settings.mailgun_domain, data 
    rescue => exception 
     puts exception.inspect 
    end 
end 

나는 이러한 오류를 가지고 썼다 :! =, @args => [: 상태, "보류 중">>, # :>, @args => [# "슬롯", @ 칼럼 => : from>, 토요일, 2017 년 12 월 2 일] , # : <, @args => [# "slots", @column => : to>, 수요일, 2018 년 1 월 10 일]>])은 후속 작업이 아니며 후속 조치로 이 제거됩니다. 인수를 별도의 필터 메소드에 전달하거나 후속을 사용하십시오. 그들을 결합하는 &. /Users/whitesnow/.rvm/gems/ruby-2.4.1/gems/sequel-4.46.0/lib/sequel/dataset/query.rb:1296:in filter_expr' /Users/whitesnow/.rvm/gems/ruby-2.4.1/gems/sequel-4.46.0/lib/sequel/dataset/query.rb:1249:in add_filter ' /Users/whitesnow/.rvm /gems/ruby-2.4.1/gems/sequel-4.46.0/lib/sequel/dataset/query.rb:1034:in where' /Volumes/Data/Work/RBP/GAB/tasks/cronjob.rake:12:in 블록이 ' /Users/whitesnow/.rvm/gems/ruby-2.4'에 있습니다. [email protected]/gems/rake-12.0.0/lib/rake/task.rb : 250 : block in execute' /Users/whitesnow/.rvm/gems/[email protected]/gems/rake-12.0.0/lib/rake/task.rb:250:in 각 ' /Users/whitesnow/.rvm/gems/[email protected]/gems/rake- 12.0.0/lib/rake/task.rb : 250 : in execute' /Users/whitesnow/.rvm/gems/[email protected]/gems/rake-12.0.0/lib/rake/task.rb:194:in invoke_with_call_chain의 블록 ' /Users/whitesnow/.rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/monitor.rb : 214 : in mon_synchronize' /Users/whitesnow/.rvm/gems/[email protected]/gems/rake-12.0.0/lib/rake/task.rb:187:in invoke_with_call_chain '

나는 오류가 sequel querying

data[:html] = render 'mails/sendemailbasedontime',:locals => { :data => localdata } 

당연히,이 쿼리는 다른 .rb 파일에서 테스트되었습니다 내가 원시 SQL 테스트에서 생각합니다. 예를 들어, test.rb 컨트롤러의 요청 처리기에서이 작업을 테스트했습니다. 그리고 잘 작동합니다. 태스크 내부에서 렌더링 기능을 사용할 수 있는지 알고 싶습니다. 나는 하루 종일이 문제를 찾아 성공하지 못했습니다. 조언이 도움이 될 것입니다. 대단히 감사합니다.

답변

1

경고 메시지로 인해 여러 개의 인수를 필터 메소드에 전달하고 있습니다.가장 간단한 해결 방법은 각 인수에 대해 필터 메서드를 별도로 호출하는 것입니다.

performances = Performance. 
    left_join(:slots, id: :slot_id). 
    exclude(status: ModelA::Api.settings.pending). 
    where(Sequel[:slots][:from]>oneweekbefore). 
    where(Sequel[:slots][:to]<onemonthafter+1.day)