delegate :chosen_languages, to: :user, prefix: false, allow_nil: true
- update_index('accounts#account', :self) if Chewy.enabled?
+ update_index('accounts#account', :self)
def local?
domain.nil?
class AccountStat < ApplicationRecord
belongs_to :account, inverse_of: :account_stat
- update_index('accounts#account', :account) if Chewy.enabled?
+ update_index('accounts#account', :account)
def increment_count!(key)
update(attributes_for_increment(key))
include Remotable
+ class << self
+ def update_index(_type_name, *_args, &_block)
+ super if Chewy.enabled?
+ end
+ end
+
def boolean_with_default(key, default_value)
value = attributes[key]
class Favourite < ApplicationRecord
include Paginable
- update_index('statuses#status', :status) if Chewy.enabled?
+ update_index('statuses#status', :status)
belongs_to :account, inverse_of: :favourites
belongs_to :status, inverse_of: :favourites
# will be based on current time instead of `created_at`
attr_accessor :override_timestamps
- update_index('statuses#status', :proper) if Chewy.enabled?
+ update_index('statuses#status', :proper)
enum visibility: [:public, :unlisted, :private, :direct, :limited], _suffix: :visibility
after_save :save_account_tag_stat
- update_index('tags#tag', :self) if Chewy.enabled?
+ update_index('tags#tag', :self)
def account_tag_stat
super || build_account_tag_stat
require_relative '../lib/mastodon/version'
require_relative '../lib/devise/two_factor_ldap_authenticatable'
require_relative '../lib/devise/two_factor_pam_authenticatable'
+require_relative '../lib/chewy/strategy/custom_sidekiq'
Dotenv::Railtie.load
sidekiq: { queue: 'pull' },
}
-Chewy.root_strategy = enabled ? :sidekiq : :bypass
-Chewy.request_strategy = enabled ? :sidekiq : :bypass
+Chewy.root_strategy = :custom_sidekiq
+Chewy.request_strategy = :custom_sidekiq
+Chewy.use_after_commit_callbacks = false
module Chewy
class << self
--- /dev/null
+# frozen_string_literal: true
+
+module Chewy
+ class Strategy
+ class CustomSidekiq < Base
+ class Worker
+ include ::Sidekiq::Worker
+
+ sidekiq_options queue: 'pull'
+
+ def perform(type, ids, options = {})
+ options[:refresh] = !Chewy.disable_refresh_async if Chewy.disable_refresh_async
+ type.constantize.import!(ids, options)
+ end
+ end
+
+ def update(type, objects, _options = {})
+ return unless Chewy.enabled?
+
+ ids = type.root.id ? Array.wrap(objects) : type.adapter.identify(objects)
+
+ return if ids.empty?
+
+ Worker.perform_async(type.name, ids)
+ end
+
+ def leave; end
+ end
+ end
+end
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
ActiveRecord::Migration.maintain_test_schema!
-WebMock.disable_net_connect!
+WebMock.disable_net_connect!(allow: Chewy.settings[:host])
Redis.current = Redis::Namespace.new("mastodon_test#{ENV['TEST_ENV_NUMBER']}", redis: Redis.current)
Sidekiq::Testing.inline!
Sidekiq::Logging.logger = nil