2017-12-08 12 views
0

Ich habe ein Backend mit Padrino Ruby Framework entwickelt und möchte einen Cron Job erstellen.Wie cron Job in Ruby-Anwendung anpassen?

Dies ist, was ich getan habe.

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

innen schedule.rb

every 1.minute do 
    rake "cronjob" 
end 

/tasks/cronjob.rake

H Bevor ich meine benutzerdefinierten Aufgaben hinzugefügt habe. und das wird zu lange hier hinzuzufügen sein.

Also schrieb ich nur Fehler passiert Teile

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 

Ich habe diese Fehler:

SEQUEL deprecation WARNUNG: Führen mehrere Argumente als Filter Argumente, wenn keine Bedingungen Spezifizierer ([# verwenden :! =, @args => [: status, "ausstehend"]>, #:>, @args => [# "slots", @column =>: von>, Sa, 02 Dez 2017]> , #: <, @args => [# "slots", @column =>: to>, Mi, 10 Jan 2018]>]) ist veraltet und wird in Sequel 5 entfernt. Übergeben Sie die Argumente an separate Filtermethoden oder verwenden Sie Sequel. &, um sie zu kombinieren. /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 Block in ' /Users/whitesnow/.rvm/gems/ruby-2.4. [email protected]/gems/rake-12.0.0/lib/rake/task.rb: 250: in block in execute' /Users/whitesnow/.rvm/gems/[email protected]/gems/rake-12.0.0/lib/rake/task.rb:250:in jeder ' /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 Block 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 '

Ich denke, Fehler sind von sequel querying und

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

natürlich, diese Abfrage in anderer .rb Datei getestet wurde und ich mit rohen SQL getestet. Zum Beispiel habe ich diese Aufgaben im Get Request-Handler des test.rb-Controllers getestet. und es funktioniert gut Ich würde gerne wissen, ob ich Renderfunktion innerhalb Aufgabe verwenden kann. Ich suchte den ganzen Tag nach diesem Problem ohne Erfolg. Jeder Rat wird mir große Hilfe sein. Vielen Dank.

Antwort

1

Mit der Verwarnungswarnung werden mehrere Argumente an eine Filtermethode übergeben.Die einfachste Lösung wäre, eine Filtermethode für jedes Argument einzeln aufzurufen:

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)