我可能错过了Sidekiq的概念。我的理解是你可以创建一个后台作业,让它在保存到数据库之前等待x分钟。到目前为止我是否正确(保存到数据库)?
我已经获得了sidekiq to show my jobs但是在x分钟之后,我不知道之后会发生什么。
在Sidekiq之前,这是我在提交帖子后保存到数据库的方式:
support_controller.rb:
def create
@user = current_user
@support = @user.supports.build(support_params)
if @support.save
flash[:success] = 'Yes'
else
flash[:alert] = 'No'
end
...
private
def support_params
params.require(:support).permit(:foo)
end
end
使用Sidekiq: this post
使用Sidekiq的原因是我需要在x天后删除帖子。
答案 0 :(得分:0)
如果您使用Sidekiq的唯一原因是在x
天之后删除帖子,即使不使用Sidekiq也可以实现此目的:
x
天/小时/分钟从cron作业运行此rake任务。要在部署/内部ruby上创建cron作业,您可以使用像whenever这样的gem。所以你的佣金任务就像:
namespace :posts do
desc 'Clean up posts'
task clean: :environment do
# with callbacks (method 1)
Post.where('delete_at >= ?', DateTime.now).each do |post|
post.destroy
end
# without callbacks (method 2)
Post.delete_all('delete_at >= ?', DateTime.now)
do
end
而不仅仅是在以下时间创建一个cron作业:
# just run the rake task every x days at x:xx
every 1.day, at: '1:00 am' do
rake "posts:clean"
end