Used for common code used between different rails engines and projects
Add this line to your application's Gemfile:
gem 'nexl_shared'And then execute:
$ bundle install
Or install it yourself as:
$ gem install nexl_shared
class GraphqlController < ApplicationController
include NexlShared::GraphqlControllerConcern
skip_before_action :verify_authenticity_token if Rails.env.development?
protected
def app_schema
AppSchema
end
endCheckQueueLatency monitors Sidekiq queue latency and reports errors when queues exceed acceptable thresholds.
Standard Queues: Queues without special naming conventions are checked against a 3-hour threshold (excluding 'imports' and 'maintenance' queues).
Within Queues: Queues following the within_* naming convention have dynamic thresholds based on their name:
within_a_minute→ 60 secondswithin_5_minutes→ 5 minuteswithin_a_hour→ 1 hour
By default, errors are tracked when queue latency reaches 150% of the threshold (50% above). For example:
within_a_minute→ errors at 90 seconds or morewithin_5_minutes→ errors at 7.5 minutes or morewithin_a_hour→ errors at 90 minutes or more
This threshold multiplier can be configured:
# config/initializers/nexl_shared.rb
NexlShared.queue_latency_error_threshold = 2.0 # Errors at 200% of thresholdRun periodically (e.g., via cron or scheduled job):
NexlShared::CheckQueueLatency.perform_nowOr with custom queues and error tracker:
NexlShared::CheckQueueLatency.new.perform(
queues: Sidekiq::Queue.all,
error_tracker: Rollbar
)After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/nexl_shared.