With the streaming server, there’s no way I could let the web server do the processing for web requests and also handle the ffmpeg processing for the stream.
Sidekiq/Redis Rails Config
Gemfile:
gem 'sidekiq'
gem 'redis'
config\sidekiq.yml:
development:
  :concurrency: 1
production:
  :concurrency: 1
:queues:
  - default
config\environment.rb Add this line:
config.active_job.queue_adapter = :sidekiq
config\cable.yml
development:
  adapter: redis
  url: <%= ENV.fetch("REDIS_URL") %>/12 %>
  channel_prefix: app_development
test:
  adapter: test
production:
  adapter: redis
  url: <%= ENV.fetch("REDIS_URL") { "redis://ip:6379/1" } %>
  channel_prefix: rails_skeleton_production
config\initializers\redis.rb:
# frozen_string_literal: true
Redis.current = Redis.new(url:  ENV['REDIS_URL'],
                          port: ENV['REDIS_PORT'])
config\initializers\sidekiq.rb:
Sidekiq.configure_client do |config|
    config.redis = { url: ENV['REDIS_URL'], size: 4, network_timeout: 5 }
end
Sidekiq.configure_server do |config|
    config.redis = { url: ENV['REDIS_URL'], size: 4, network_timeout: 5 }
end
config\routes.rb
# Add this require to the beginning
require 'sidekiq/web'
# Mount Sidekiq inside the Routes.draw.do
  mount Sidekiq::Web => '/sidekiq'
Ruby Calling the Job
Generating the worker from the console with:
rails g sidekiq:worker HardWorker
Note setting the queue from where we want to call the job. In this case this is from within StreamController < Application Controller
    def start_stream
        M3u8ConverterWorker.set(queue: 'default').perform_async("/location/to/stream/test0.m3u8","rtmp://localhost:1935/live/test0")
        render json: {started_stream: true, kicked_off_job: true}
    end
Starting Everything Up:
Start Redis.. For me this was starting it on another server
docker run -d --name phss_redis -p 6379:6379 redis
Then from within the phss_redis docker container:
# Enter the container
docker exec -it phss_redis bash
# From within the container
redis-cli
# From within Redis CLI
bind 0.0.0.0
save
# Exit the containers
Spinning up Sidekiq:
REDIS_URL="redis://ip.to.the.redis:6379" bundle exec sidekiq -e production -C config/sidekiq.yml
Spinning up Rails:
REDIS_URL=redis://10.0.5.10:6379 rails s -e production
