Class: SolidQueueGuard::Generators::MetricsGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- SolidQueueGuard::Generators::MetricsGenerator
- Defined in:
- lib/generators/solid_queue_guard/metrics/metrics_generator.rb
Constant Summary collapse
- RECURRING_SNIPPET =
<<~YAML emit_solid_queue_depth_metrics: class: SolidQueueGuard::Metrics::EmitDepthJob queue: solid_queue_recurring schedule: every 15 seconds YAML
- CONFIG_SNIPPET =
<<~RUBY # Operational Datadog metrics (requires dogstatsd-ruby) config.emit_depth_metrics = true config.emit_event_metrics = true # config.statsd_service_name = 'my-service' # or set DD_SERVICE RUBY
Instance Method Summary collapse
Instance Method Details
#add_recurring_task ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/generators/solid_queue_guard/metrics/metrics_generator.rb', line 47 def add_recurring_task relative = 'config/recurring.yml' path = File.(relative, destination_root) unless File.exist?(path) say_status :skip, "#{relative} not found", :yellow return end content = File.read(path) if content.include?('emit_solid_queue_depth_metrics') say_status :identical, "#{relative} already has emit_solid_queue_depth_metrics", :blue return end updated = insert_recurring_snippet(content) File.write(path, updated) say_status :insert, "#{relative} (emit_solid_queue_depth_metrics)", :green end |
#enable_config_flags ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/generators/solid_queue_guard/metrics/metrics_generator.rb', line 27 def enable_config_flags initializer = 'config/initializers/solid_queue_guard.rb' full_path = File.(initializer, destination_root) unless File.exist?(full_path) say_status :error, "#{initializer} not found — run solid_queue_guard:install first", :red return end contents = File.read(full_path) if contents.include?('emit_depth_metrics') say_status :identical, "#{initializer} already enables depth metrics", :blue return end inject_into_file initializer, before: /\nend\s*\z/ do CONFIG_SNIPPET end end |
#remind_dependency ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/generators/solid_queue_guard/metrics/metrics_generator.rb', line 67 def remind_dependency say <<~MSG Add to your Gemfile if missing: gem 'dogstatsd-ruby' Ensure a Solid Queue worker consumes the `solid_queue_recurring` queue, then deploy and verify: solid_queue.ready.count{service:<your-service>} MSG end |