Skip to content
Vadzim Tonka edited this page Jun 13, 2014 · 6 revisions

This document is used to keep track of the ideas we have for the future of the loops gem. Having an idea in this list does not guarantee an implementation, but should help to bring it closer to reality.

Stability

  • Forward STDOUT/STDERR to the log file when running in background

Testing

  • Integration tests (start loops process, stop, etc)
  • Test helpers (create_loop, run_loop) for easier testing of loops classes

CLI

  • Allow setting workers count in CLI (loops start hello -d -w 50)

Configuration

  • Global loop options override (global.override in YAML config could contain options that would set/override loop-specific values)
  • Environment-specific configurations

More Ideas

  • Per worker resource (memory) limits - allow user to set a soft and a hard limit on a loop and let manager control loop workers to make sure they never grow too big (by asking them to shut down early).
  • Report loops metrics to statsd - add a worker-level API for emitting loop-specific metrics to statsd + add statsd-based monitoring for interesting events within the master process (count new worker spawning, worker restarts, etc).
  • Worker pool auto-scaling (min_workers/max_workers in config and a feedback link between the loop and the process manager that would allow the loop to control scaling)

Done, But Not Released Yet

  • Add config_option helper methods that allow users to define which options are expected by the loop and provide an easy way to define default values:

    class FooLoop < Loops::Base
      config_option :poll_interval, 1
    
      def run
        with_interval_of(poll_interval) do
          ....
        end
      end
    end
Clone this wiki locally