Ruby on rails 正在执行rails中的作业:inline,尽管将队列适配器设置为:sidekiq

Ruby on rails 正在执行rails中的作业:inline,尽管将队列适配器设置为:sidekiq,ruby-on-rails,ruby,sidekiq,Ruby On Rails,Ruby,Sidekiq,我正在探索关于如何设置和使用sidekiq在后台执行流程的不同教程。我决定完全遵循每一件事。但是,当我开始尝试执行作业时,sidekiq队列中没有添加任何内容,作业以内联方式执行 就像在教程中一样,我希望每次尝试执行作业时,它都会反映在我的sidekiq中,但是当我这样做时,它保持如下: 当我的rails服务器自己执行作业时 以下是教程中所需的必要文件中的代码: 我的档案: # Gemfile.rb source 'https://rubygems.org' git_source(:git

我正在探索关于如何设置和使用sidekiq在后台执行流程的不同教程。我决定完全遵循每一件事。但是,当我开始尝试执行作业时,sidekiq队列中没有添加任何内容,作业以内联方式执行

就像在教程中一样,我希望每次尝试执行作业时,它都会反映在我的sidekiq中,但是当我这样做时,它保持如下:

当我的rails服务器自己执行作业时

以下是教程中所需的必要文件中的代码:

我的档案:

# Gemfile.rb

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.6.0'

gem 'rails', '~> 5.2.2'
gem 'sqlite3'
gem 'puma', '~> 3.11'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.2'
gem 'turbolinks', '~> 5'
gem 'jbuilder', '~> 2.5'
gem 'semantic-ui-sass', github: 'doabit/semantic-ui-sass'
gem 'slim-rails'
gem 'chartkick'
gem 'groupdate'
gem 'faker', :git => 'https://github.com/stympy/faker.git', :branch => 'master'

gem 'rest-client'
gem 'devise', '~> 4.6', '>= 4.6.1'
gem 'sidekiq'
gem 'bootsnap', '>= 1.1.0', require: false

group :development, :test do
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end

group :development do
  gem 'web-console', '>= 3.3.0'
  gem 'listen', '>= 3.0.5', '< 3.2'
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'
end

group :test do
  gem 'capybara', '>= 2.15'
  gem 'selenium-webdriver'
  gem 'chromedriver-helper'
end

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

最后,我的控制器:

  def create_random_vehicle
    GenerateRandomVehicleJob.perform_later
    redirect_to root_path
  end

我确信我的redis服务器、rails服务器和sidekiq都正常运行。

结果是我的
活动作业.queue\u适配器已被我的
config/environment/development.rb
覆盖,正如@max pleaner在上面指出的那样。我刚刚删除了
活动的\u job.queue\u适配器=:inline
,它解决了我的问题!:)

您是否检查过您的config/environment/development.rb没有覆盖活动的作业队列适配器?这正是问题所在!谢谢!:)另一方面,在我之前尝试探索解决方案时,我尝试通过
rails generate-sidekiq:worker random\u vehicle\u generator
设置一个sidekiq:worker。我只是对perform使用了相同的代码,当我尝试它时,作业被正确地排队。我只是很好奇,为什么在我的
development.rb
中有被覆盖的队列适配器,但它仍然有效。
# config/application.rb
require_relative 'boot'

require 'rails/all'

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module CatchAllApp
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 5.2
    config.active_job.queue_adapter = :sidekiq 

    # No need to run sidekiq and redis server in development
    #config.active_job.queue_adapter = Rails.env.production? ? :sidekiq : :async

    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration can go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded after loading
    # the framework and any gems in your application.
  end
end
# config/initializers/sidekiq.rb

Sidekiq.configure_server do |config|
    config.redis = { url: 'redis://localhost:6379/0' }
end

Sidekiq.configure_client do |config|
    config.redis = { url: 'redis://localhost:6379/0' }
end
  def create_random_vehicle
    GenerateRandomVehicleJob.perform_later
    redirect_to root_path
  end