Module: FiberJob

Defined in:
lib/fiber_job.rb,
lib/fiber_job/jid.rb,
lib/fiber_job/job.rb,
lib/fiber_job/cron.rb,
lib/fiber_job/queue.rb,
lib/fiber_job/client.rb,
lib/fiber_job/config.rb,
lib/fiber_job/logger.rb,
lib/fiber_job/worker.rb,
lib/fiber_job/version.rb,
lib/fiber_job/cron_job.rb,
lib/fiber_job/concurrency.rb,
lib/fiber_job/cron_parser.rb,
lib/fiber_job/process_manager.rb

Overview

FiberJob is a high-performance, Redis-based background job processing library for Ruby built on modern fiber-based concurrency. It combines the persistence of Redis with the speed of async fibers to deliver exceptional performance and reliability.

Examples:

Basic usage

# Configure the library
FiberJob.configure do |config|
  config.redis_url = 'redis://localhost:6379/0'
  config.queues = { default: 5, high: 10 }
end

# Define a job
class EmailJob < FiberJob::Job
  def perform(user_id, message)
    # Send email logic here
  end
end

# Enqueue a job
EmailJob.perform_async(123, "Welcome!")

Starting a worker

worker = FiberJob::Worker.new(queues: ['default', 'high'])
worker.start

Defined Under Namespace

Classes: Client, ConcurrencyManager, Config, Cron, CronJob, CronParser, JID, Job, Logger, NullLogger, ProcessManager, Queue, Worker

Constant Summary collapse

VERSION =
'0.2.6'

Class Method Summary collapse

Class Method Details

.configFiberJob::Config

Returns the current configuration instance. Creates a new configuration if one doesn’t exist.

Examples:

Accessing configuration

redis_url = FiberJob.config.redis_url
queues = FiberJob.config.queues

Returns:

See Also:



71
72
73
# File 'lib/fiber_job.rb', line 71

def config
  @config ||= Config.new
end

.configure {|config| ... } ⇒ void

This method returns an undefined value.

Configures the FiberJob library with custom settings. Yields the configuration object to the provided block for customization.

Examples:

Basic configuration

FiberJob.configure do |config|
  config.redis_url = 'redis://localhost:6379/0'
  config.queues = { default: 5, high: 10, low: 2 }
  config.log_level = :info
end

Yields:

  • (config)

    Configuration object for customization

Yield Parameters:

See Also:



58
59
60
# File 'lib/fiber_job.rb', line 58

def configure
  yield(config)
end

.loggerFiberJob::Logger

Returns the current logger instance. Creates a new logger with the current configuration if one doesn’t exist.

Examples:

Logging messages

FiberJob.logger.info("Job completed successfully")
FiberJob.logger.error("Job failed: #{error.message}")

Returns:

See Also:



84
85
86
# File 'lib/fiber_job.rb', line 84

def logger
  @logger ||= FiberJob::Logger.new(config)
end

.register_cron_jobsvoid

This method returns an undefined value.

Automatically discovers and registers all cron job classes. Scans ObjectSpace for classes that inherit from FiberJob::CronJob and registers them for scheduling.

Examples:

Manual registration

class DailySummaryJob < FiberJob::CronJob
  cron '0 9 * * *'  # Every day at 9 AM
end

FiberJob.register_cron_jobs

See Also:



102
103
104
# File 'lib/fiber_job.rb', line 102

def register_cron_jobs
  ObjectSpace.each_object(Class).select { |klass| klass < FiberJob::CronJob }.each(&:register)
end