【问题标题】:Rails - Correct location to place cron jobsRails - 放置 cron 作业的正确位置
【发布时间】:2017-08-18 01:45:51
【问题描述】:

这个问题与代码质量和组织更相关。

我正在开发一个 Rails 应用程序,我们每天都会执行一些 cron 作业。那些慢跑已经开始工作了,但目前我将它们放在我的模型中,例如:

def update_boleto_orders_payment_status
    orders = Order.boleto_unpaid_orders
    orders.each do |o|
      order = HTTParty.get("https...",
                    headers: {"Authorization" => "Basic #
{encode_auth_token}"})
      order_status = JSON.parse(order.body).symbolize_keys![:status]
      o.update_column(:paid, true) if(order_status.eql? "AUTHORIZED")
    end
  end

我使用这个方法来更新我的订单状态,这个方法位于我的 Order 模型中。

我的问题是:假设 Rails 的最佳实践和约定,将这个工作放在我的模型中是否正确?或者我应该将这种方法放在其他地方吗?

【问题讨论】:

    标签: ruby-on-rails ruby cron jobs software-quality


    【解决方案1】:

    如今,在 app/jobs 目录中创建作业类非常普遍。

    【讨论】:

    • 所以与作业和调度相关的所有内容我都可以放在新目录作业中,这听起来比放在我的模型中更好:)
    • 是的。几年前,Rails 添加了一个名为 ActiveJob 的框架,但您也可以只编写响应 #perform 的普通 ruby​​ 对象。例如:UpdateBoletoOrderPaymentsStatusJob#perform
    猜你喜欢
    • 2018-11-30
    • 2013-12-03
    • 1970-01-01
    • 2021-09-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2021-06-29
    相关资源
    最近更新 更多