我一直在开发一个带有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
我收到了这些错误:
SEQUEL DEPRECATION警告:将多个参数作为过滤器传递 不使用条件说明符时的参数 ([#:!=,@ args =&gt; [:状态, &#34;待定&#34;]&gt;,#:&gt;, @ ARGS =&GT; [#&#34;槽&#34 ;, @ column =&gt;:from&gt;,Sat,2017年12月2日]&gt;,#:&lt;,@ args =&gt; [#&#34; slots&#34;, @ column =&gt;:to&gt;,Wed,2018 Jan 201]&gt;])已被弃用,将被删除 在续集5.将参数传递给单独的过滤方法或使用 。续集和放大器;结合它们。 /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&#39; /Users/whitesnow/.rvm/gems/ruby-2.4.1/gems/sequel-4.46.0/lib/sequel/dataset/query.rb:1034:inwhere' /Volumes/Data/Work/RBP/GAB/tasks/cronjob.rake:12:in
阻止&#39; /Users/whitesnow/.rvm/gems/ruby-2.4.1@global/gems/rake-12.0.0/lib/rake/task.rb:250:inblock in execute' /Users/whitesnow/.rvm/gems/ruby-2.4.1@global/gems/rake-12.0.0/lib/rake/task.rb:250:in
各&#39; /Users/whitesnow/.rvm/gems/ruby-2.4.1@global/gems/rake-12.0.0/lib/rake/task.rb:250:in {* 1}}阻止invoke_with_call_chain&#39; /Users/whitesnow/.rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/monitor.rb:214:inexecute' /Users/whitesnow/.rvm/gems/ruby-2.4.1@global/gems/rake-12.0.0/lib/rake/task.rb:194:in
invoke_with_call_chain&#39;
我认为错误来自mon_synchronize'
/Users/whitesnow/.rvm/gems/ruby-2.4.1@global/gems/rake-12.0.0/lib/rake/task.rb:187:in
和
sequel querying
当然,这个查询在其他.rb文件中测试过,我用raw sql测试过。例如,我在test.rb控制器的get request hander里面测试了这个任务。它确实运作良好 我想知道我是否可以在任务中使用渲染功能。 我整天搜索这个问题没有成功。 任何建议对我都有很大的帮助。 非常感谢你。
答案 0 :(得分:1)
正如弃用警告所述,您将多个参数传递给过滤器方法。最简单的解决方法是为每个参数分别调用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)