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