我一直在使用padrino ruby框架开发后端,我想建立一个cron工作。
这就是我所做的。
gem 'whenever', :require => false
wheneverize .
在schedule.rb中
every 1.minute do
rake "cronjob"
end
/tasks/cronjob.rake
在这里,我添加了自定义任务。这将需要很长时间才能在此处添加。
所以我只写了发生错误的部分
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] = "** <postmaster@**.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 => [:status,“ pending”]>,#:>,@ args => [#“ slots” ,@column =>:from>,Sat,02 Dec 2017]>,#:<,@args => [#“ slots”,@column =>:to>,Wed,10 Jan 2018]>])并将在Sequel 5中删除。将参数传递给单独的过滤器方法,或使用Sequel。&组合它们。/Users/whitesnow/.rvm/gems/ruby-2.4.1/gems/sequel-4.46.0/lib/sequel/dataset/query.rb:1296:在
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:在where' /Volumes/Data/Work/RBP/GAB/tasks/cronjob.rake:12:in
'/Users/whitesnow/.rvm/gems/ruby-2.4.1@global/gems/rake中的块中-12.0.0 / lib / rake / task.rb:250:在block in execute' /Users/whitesnow/.rvm/gems/ruby-2.4.1@global/gems/rake-12.0.0/lib/rake/task.rb:250:in
每个/Users/whitesnow/.rvm/gems/ruby-2.4中。execute' /Users/whitesnow/.rvm/gems/ruby-2.4.1@global/gems/rake-12.0.0/lib/rake/task.rb:194:in
/users/whitesnow/.rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/monitor.rb:214:inmon_synchronize' /Users/whitesnow/.rvm/gems/ruby-2.4.1@global/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控制器的get请求处理程序中测试了此任务。而且效果很好,我想知道是否可以在任务中使用渲染功能。我整天都在搜索这个问题,但没有成功。任何建议对我都会有很大帮助。非常感谢你。
作为弃用警告状态,您正在将多个参数传递给filter方法。最简单的解决方法是为每个参数分别调用filter方法:
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)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句