6 changed files with 113 additions and 0 deletions
@ -0,0 +1,26 @@ |
|||||||
|
module SidekiqAddOns |
||||||
|
def flushdb |
||||||
|
Sidekiq.redis(&:flushdb) |
||||||
|
end |
||||||
|
end |
||||||
|
Sidekiq.send(:extend, SidekiqAddOns) unless Sidekiq.respond_to?(:flushdb) |
||||||
|
|
||||||
|
opts = {} |
||||||
|
opts[:url] = ENV["REDIS_URL"] if ENV.key?("REDIS_URL") |
||||||
|
|
||||||
|
if opts.key?(:url) |
||||||
|
Sidekiq.configure_server do |config| |
||||||
|
config.redis = opts |
||||||
|
end |
||||||
|
|
||||||
|
Sidekiq.configure_client do |config| |
||||||
|
config.redis = opts |
||||||
|
end |
||||||
|
|
||||||
|
ActiveJob::Base.queue_adapter = :sidekiq unless Rails.env.test? |
||||||
|
end |
||||||
|
|
||||||
|
Sidekiq.default_worker_options = { |
||||||
|
unique: :until_executing, |
||||||
|
unique_args: ->(args) { args.first.except("job_id") } |
||||||
|
} |
||||||
@ -0,0 +1,16 @@ |
|||||||
|
require "sunspot" |
||||||
|
require "sunspot/queue/session_proxy" |
||||||
|
require "sunspot/queue/active_job" |
||||||
|
|
||||||
|
Sunspot::Queue::SessionProxy.class_eval do |
||||||
|
def commit_if_dirty(_ = false); end |
||||||
|
|
||||||
|
def commit_if_delete_dirty(_ = false); end |
||||||
|
|
||||||
|
def commit(_ = false); end |
||||||
|
end |
||||||
|
|
||||||
|
Sunspot::Rails.configuration.instance_variable_get("@user_configuration")["auto_index_callback"] = "after_commit" |
||||||
|
|
||||||
|
backend = Sunspot::Queue::ActiveJob::Backend.new |
||||||
|
Sunspot.session = Sunspot::Queue::SessionProxy.new(Sunspot.session, backend) |
||||||
@ -0,0 +1,13 @@ |
|||||||
|
require "sunspot/queue" |
||||||
|
|
||||||
|
module Sunspot::Queue |
||||||
|
module ActiveJob |
||||||
|
require "sunspot/queue/active_job/backend" |
||||||
|
require "sunspot/queue/active_job/index_job" |
||||||
|
require "sunspot/queue/active_job/removal_job" |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
# Backwards compatability with 0.9.x. Will be removed by 1.0 / 0.11. |
||||||
|
::Sunspot::Queue::IndexJob = ::Sunspot::Queue::ActiveJob::IndexJob |
||||||
|
::Sunspot::Queue::RemovalJob = ::Sunspot::Queue::ActiveJob::RemovalJob |
||||||
@ -0,0 +1,30 @@ |
|||||||
|
require "active_job" |
||||||
|
require "sunspot/queue/active_job/index_job" |
||||||
|
require "sunspot/queue/active_job/removal_job" |
||||||
|
|
||||||
|
module Sunspot::Queue::ActiveJob |
||||||
|
class Backend |
||||||
|
attr_reader :configuration |
||||||
|
|
||||||
|
def initialize(configuration = Sunspot::Queue.configuration) |
||||||
|
@configuration = configuration |
||||||
|
end |
||||||
|
|
||||||
|
def index(klass, id) |
||||||
|
index_job.perform_later(klass, id) |
||||||
|
end |
||||||
|
|
||||||
|
def remove(klass, id) |
||||||
|
removal_job.perform_later(klass, id) |
||||||
|
end |
||||||
|
|
||||||
|
private |
||||||
|
def index_job |
||||||
|
configuration.index_job || ::Sunspot::Queue::ActiveJob::IndexJob |
||||||
|
end |
||||||
|
|
||||||
|
def removal_job |
||||||
|
configuration.removal_job || ::Sunspot::Queue::ActiveJob::RemovalJob |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,14 @@ |
|||||||
|
require "sunspot/queue/helpers" |
||||||
|
|
||||||
|
module Sunspot::Queue::ActiveJob |
||||||
|
class IndexJob < ApplicationJob |
||||||
|
extend ::Sunspot::Queue::Helpers |
||||||
|
queue_as :sunspot_index |
||||||
|
|
||||||
|
def perform(klass, id) |
||||||
|
self.class.without_proxy do |
||||||
|
self.class.constantize(klass).find(id).solr_index |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
@ -0,0 +1,14 @@ |
|||||||
|
require "sunspot/queue/helpers" |
||||||
|
|
||||||
|
module Sunspot::Queue::ActiveJob |
||||||
|
class RemovalJob < ApplicationJob |
||||||
|
extend ::Sunspot::Queue::Helpers |
||||||
|
queue_as :sunspot_index |
||||||
|
|
||||||
|
def perform(klass, id) |
||||||
|
self.class.without_proxy do |
||||||
|
::Sunspot.remove_by_id(klass, id) |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
Loading…
Reference in new issue