【问题标题】:How to customize cron job in ruby application?如何在 ruby​​ 应用程序中自定义 cron 作业?
【发布时间】:2018-02-11 19:08:55
【问题描述】:

我一直在使用 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 弃用警告:将多个参数作为过滤器传递 不使用条件说明符时的参数 ([#:!=, @args=>[:状态, "待定"]>, #:>, @args=>[#"slots", @column=>:from>,星期六,2017 年 12 月 2 日]>,#:[#"slots", @column=>:to>,星期三,2018 年 1 月 10 日]>]) 已弃用并将被删除 在 Sequel 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' /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:inblock in ' /Users/whitesnow/.rvm/gems/ruby-2.4.1@global/gems/rake-12.0.0/lib/rake/task.rb:250:in block in execute' /Users/whitesnow/.rvm/gems/ruby-2.4.1@global/gems/rake-12.0.0/lib/rake/task.rb:250:in each' /Users/whitesnow/.rvm/gems/ruby-2.4.1@global/gems/rake-12.0.0/lib/rake/task.rb:250:in execute' /Users/whitesnow/.rvm/gems/ruby-2.4.1@global/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/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 request handler 中测试了这个任务。它确实运作良好 我想知道我是否可以在任务中使用渲染功能。 我整天搜索这个问题没有成功。 任何建议都会对我有很大帮助。 非常感谢。

【问题讨论】:

    标签: ruby cron padrino


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2021-06-03
      • 2014-12-07
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多