60 lines
1.7 KiB
Ruby
60 lines
1.7 KiB
Ruby
require 'sidekiq_middlewares'
|
|
require 'sidekiq/middleware/i18n'
|
|
|
|
# Single process-mode
|
|
if AppConfig.environment.single_process_mode? && Rails.env != "test"
|
|
if Rails.env == 'production'
|
|
puts "WARNING: You are running Diaspora in production without Sidekiq"
|
|
puts " workers turned on. Please set single_process_mode to false in"
|
|
puts " config/diaspora.yml."
|
|
end
|
|
require 'sidekiq/testing/inline'
|
|
end
|
|
|
|
Sidekiq.configure_server do |config|
|
|
config.redis = AppConfig.get_redis_options
|
|
|
|
config.server_middleware do |chain|
|
|
chain.add SidekiqMiddlewares::CleanAndShortBacktraces
|
|
end
|
|
|
|
# Set connection pool on Heroku
|
|
database_url = ENV['DATABASE_URL']
|
|
if(database_url)
|
|
ENV['DATABASE_URL'] = "#{database_url}?pool=#{AppConfig.environment.sidekiq.concurrency.get}"
|
|
ActiveRecord::Base.establish_connection
|
|
end
|
|
|
|
# Make sure each Sidekiq process has its own sequence of UUIDs
|
|
UUID.generator.next_sequence
|
|
|
|
# wrap the logger to add the sidekiq job context to the log
|
|
class SidekiqLogger < SimpleDelegator
|
|
SPACE = " "
|
|
|
|
# only info is used with context
|
|
def info(data=nil)
|
|
return false if Logger::Severity::INFO < level
|
|
data = yield if data.nil? && block_given?
|
|
__getobj__.info("#{context}#{data}")
|
|
end
|
|
|
|
# from sidekiq/logging.rb
|
|
def context
|
|
c = Thread.current[:sidekiq_context]
|
|
"#{c.join(SPACE)}: " if c && c.any?
|
|
end
|
|
end
|
|
|
|
Sidekiq::Logging.logger = SidekiqLogger.new(Logging.logger[Sidekiq])
|
|
end
|
|
|
|
Sidekiq.configure_client do |config|
|
|
config.redis = AppConfig.get_redis_options
|
|
end
|
|
|
|
schedule_file = "config/schedule.yml"
|
|
|
|
if File.exist?(schedule_file) && Sidekiq.server?
|
|
Sidekiq::Cron::Job.load_from_hash YAML.load_file(schedule_file)
|
|
end
|