我如何在 Rails 中的 gem 时 运行 控制器动作?

How can I run controller action with whenever gem in Rails?

例如我有一个控制器 "Posts" 和一个动作 "create"。我可以从终端 运行 它吗?

我想用 whenever gem:

every 2.hours do
    # I want to run posts#index
end

我该怎么做?

一个解决方案是创建一个 class 来执行 create 逻辑:

class PostsController < ApplicationController

  def create
    creator = PostCreator.new(params)
    creator.process
  end
end

因此您可以在 Whataver 的作业中使用此 class:

every 2.hours do
  creator = PostCreator.new({ whatever: 'you want'})
  creator.process
end