Ruby on rails 是否忽略了ActiveJob队列适配器?
user\u controller.rbRuby on rails 是否忽略了ActiveJob队列适配器?,ruby-on-rails,ruby,backgroundworker,rails-activejob,sucker-punch,Ruby On Rails,Ruby,Backgroundworker,Rails Activejob,Sucker Punch,user\u controller.rb class UsersController def create MyJob.perform_later User.create(...) end end class MyJob < ActiveJob::Base queue_as :default def perform() puts "START" sleep 3 puts "END" end end require 'suck
class UsersController
def create
MyJob.perform_later
User.create(...)
end
end
class MyJob < ActiveJob::Base
queue_as :default
def perform()
puts "START"
sleep 3
puts "END"
end
end
require 'sucker_punch/async_syntax'
Rails.application.configure do
config.active_job.queue_adapter = :sucker_punch
end
我的工作。rb
class UsersController
def create
MyJob.perform_later
User.create(...)
end
end
class MyJob < ActiveJob::Base
queue_as :default
def perform()
puts "START"
sleep 3
puts "END"
end
end
require 'sucker_punch/async_syntax'
Rails.application.configure do
config.active_job.queue_adapter = :sucker_punch
end
当我在rails控制台中运行MyJob.perform\u(稍后执行)
时,一切正常,记录器显示以下消息将MyJob(作业ID:6c857af8-a8ed-4bd0-918b-4296c4315727)排入吸盘(默认)
但是,当我向我的用户\u控制器发送http请求时,我在3秒钟之前没有收到任何响应(这使我认为作业不是异步执行的),并且记录器显示此将我的作业(作业ID:e3d698eb-00d8-4849-9496-f01c53fc7217)排队到内联(默认)
它似乎在控制器中使用内联(默认?)适配器,这不是异步的
ps:我正在使用
puma
作为http服务器,在没有ActiveJob的情况下使用sucker\u punch可以正常工作您检查了development.rb文件了吗?如果有一个配置选项说config.active\u job.queue\u adapter=:inline
,它可能会覆盖您在初始值设定项中放入的任何内容。这一行不存在这是另一个愚蠢的猜测,但是您是否重新启动了rails服务器以便可以加载初始值设定项?是的,我做了多次。但是,将config.active\u job.queue\u adapter=:sucker\u punch
放入application.rb中可以使其工作。这一定是答案,如果有人有想法,请不要犹豫。