leveret 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +7 -5
- data/exe/leveret_worker +2 -7
- data/lib/leveret/cli.rb +77 -0
- data/lib/leveret/version.rb +1 -1
- data/lib/leveret/worker.rb +6 -13
- metadata +2 -1
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 0fa818a1ffcc9bc99f240661a7f4d6b8fac47ce4
         | 
| 4 | 
            +
              data.tar.gz: 4eff94051e933d7fb226a21a7026755459bc14cc
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 8d3a79bede854e7fc939c5d01208a0d79463b9d2e8f6212ff9721e947d4a14c48e0bdef30bbc8b52269de7ccee0aa98437ef1f200eb98767c9dc2cf674cc4727
         | 
| 7 | 
            +
              data.tar.gz: b93bfe1b96cae3dd7923dc005fa31a2da00d7582d80df9ba57f66fa041d318aa91516f6882c6a6251e756330ee09ac167e3427b92a360ec955a9f0c3702eedeb
         | 
    
        data/README.md
    CHANGED
    
    | @@ -113,22 +113,24 @@ MyJob.enqueue(test_text: "Hi there! Please write me to the test file.", priority | |
| 113 113 | 
             
            To start a leveret worker, simply run the `leveret_worker` executable included in the gem. Started with no arguments it
         | 
| 114 114 | 
             
            will create a worker monitoring the default queue and process one job at a time.
         | 
| 115 115 |  | 
| 116 | 
            -
            Changing the queues that a worker monitors requires passing a comma separated list of queue names in the  | 
| 117 | 
            -
             | 
| 116 | 
            +
            Changing the queues that a worker monitors requires passing a comma separated list of queue names in the option
         | 
| 117 | 
            +
            `--queues`. The example below watches for jobs on the queues `standard` and `other`.
         | 
| 118 118 |  | 
| 119 119 | 
             
            ```bash
         | 
| 120 | 
            -
            bundle exec leveret_worker  | 
| 120 | 
            +
            bundle exec leveret_worker --queues standard,other
         | 
| 121 121 | 
             
            ```
         | 
| 122 122 |  | 
| 123 123 | 
             
            By default, workers will only process one job at a time. For each job that is executed, a child process is forked, and
         | 
| 124 124 | 
             
            the job run in the new process. When the job completes, the fork exits. We can process more jobs simultaniously simply
         | 
| 125 | 
            -
            by allowing more forks to run. To increase this limit set the ` | 
| 125 | 
            +
            by allowing more forks to run. To increase this limit set the `--processes` option. There is no limit to
         | 
| 126 126 | 
             
            this variable in Leveret, but you should be aware of your own OS and resource limits.
         | 
| 127 127 |  | 
| 128 128 | 
             
            ```bash
         | 
| 129 | 
            -
            bundle exec leveret_worker  | 
| 129 | 
            +
            bundle exec leveret_worker --processes 5
         | 
| 130 130 | 
             
            ```
         | 
| 131 131 |  | 
| 132 | 
            +
            It's also possible to set the log level and output from the command line, call up `--help` for more details.
         | 
| 133 | 
            +
             | 
| 132 134 | 
             
            ## Configuration
         | 
| 133 135 |  | 
| 134 136 | 
             
            Configuration in Leveret is done via a configure block. In a Rails application it is recommended you place your
         | 
    
        data/exe/leveret_worker
    CHANGED
    
    | @@ -2,15 +2,10 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            require "bundler/setup"
         | 
| 4 4 | 
             
            require "leveret"
         | 
| 5 | 
            +
            require "leveret/cli"
         | 
| 5 6 |  | 
| 6 7 | 
             
            if File.exist?("./config/environment.rb")
         | 
| 7 8 | 
             
              require File.expand_path("./config/environment.rb")
         | 
| 8 9 | 
             
            end
         | 
| 9 10 |  | 
| 10 | 
            -
             | 
| 11 | 
            -
            queues << Leveret.configuration.default_queue_name if queues.empty?
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            concurrent_fork_count = ENV["PROCESSES"] || Leveret.configuration.concurrent_fork_count
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            worker = Leveret::Worker.new(queues: queues, concurrent_fork_count: concurrent_fork_count)
         | 
| 16 | 
            -
            worker.do_work
         | 
| 11 | 
            +
            Leveret::CLI.new(ARGV)
         | 
    
        data/lib/leveret/cli.rb
    ADDED
    
    | @@ -0,0 +1,77 @@ | |
| 1 | 
            +
            module Leveret
         | 
| 2 | 
            +
              class CLI
         | 
| 3 | 
            +
                attr_accessor :options
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                def initialize(args)
         | 
| 6 | 
            +
                  self.options = {}
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                  parse_options(args)
         | 
| 9 | 
            +
                  configure_leveret
         | 
| 10 | 
            +
                  start_worker
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                private
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                def parse_options(args)
         | 
| 16 | 
            +
                  option_parser.parse!(args)
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                def configure_leveret
         | 
| 20 | 
            +
                  Leveret.configure do |config|
         | 
| 21 | 
            +
                    config.concurrent_fork_count = options[:processes] if options[:processes]
         | 
| 22 | 
            +
                    config.log_level = options[:log_level] if options[:log_level]
         | 
| 23 | 
            +
                    config.log_file = options[:log_file] if options[:log_file]
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
                end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                def start_worker
         | 
| 28 | 
            +
                  Leveret::Worker.new(*options[:queues]).do_work
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                def option_parser
         | 
| 32 | 
            +
                  @option_parser ||= OptionParser.new do |opts|
         | 
| 33 | 
            +
                    opts.banner = "Usage: leveret_worker [options]"
         | 
| 34 | 
            +
                    opts.separator ""
         | 
| 35 | 
            +
                    opts.separator "Options:"
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                    opts.on "-q", "--queues [QUEUES]", String, "Comma separated list of queues to subscribe to" do |queues|
         | 
| 38 | 
            +
                      options[:queues] = queues.split(',')
         | 
| 39 | 
            +
                    end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                    opts.on "-p", "--processes [PROCESSES]", Integer, "Number of concurrent jobs to process" do |processes|
         | 
| 42 | 
            +
                      options[:processes] = processes
         | 
| 43 | 
            +
                    end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                    opts.on '-l', '--log-level [LEVEL]', String, "Level of log output (debug, info, warning, error, fatal)" do |lvl|
         | 
| 46 | 
            +
                      options[:log_level] = convert_log_level(lvl)
         | 
| 47 | 
            +
                    end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                    opts.on '-o', '--log-output [FILE]', String, "Location to write log file to" do |logfile|
         | 
| 50 | 
            +
                      options[:log_file] = logfile
         | 
| 51 | 
            +
                    end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                    opts.on_tail '-h', '--help', "Show this message" do
         | 
| 54 | 
            +
                      STDOUT.puts opts
         | 
| 55 | 
            +
                      exit
         | 
| 56 | 
            +
                    end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                    opts.on_tail '-v', '--version', "Show the version" do
         | 
| 59 | 
            +
                      STDOUT.puts Leveret::VERSION
         | 
| 60 | 
            +
                      exit
         | 
| 61 | 
            +
                    end
         | 
| 62 | 
            +
                  end
         | 
| 63 | 
            +
                end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                def convert_log_level(level)
         | 
| 66 | 
            +
                  case level
         | 
| 67 | 
            +
                  when 'debug' then Logger::DEBUG
         | 
| 68 | 
            +
                  when 'info' then Logger::INFO
         | 
| 69 | 
            +
                  when 'warn' then Logger::WARN
         | 
| 70 | 
            +
                  when 'error' then Logger::ERROR
         | 
| 71 | 
            +
                  when 'fatal' then Logger::FATAL
         | 
| 72 | 
            +
                  else
         | 
| 73 | 
            +
                    Logger::INFO
         | 
| 74 | 
            +
                  end
         | 
| 75 | 
            +
                end
         | 
| 76 | 
            +
              end
         | 
| 77 | 
            +
            end
         | 
    
        data/lib/leveret/version.rb
    CHANGED
    
    
    
        data/lib/leveret/worker.rb
    CHANGED
    
    | @@ -15,19 +15,12 @@ module Leveret | |
| 15 15 |  | 
| 16 16 | 
             
                # Create a new worker to process jobs from the list of queue names passed
         | 
| 17 17 | 
             
                #
         | 
| 18 | 
            -
                # @ | 
| 19 | 
            -
                #    | 
| 20 | 
            -
                 | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 23 | 
            -
                   | 
| 24 | 
            -
                    queues: [configuration.default_queue_name],
         | 
| 25 | 
            -
                    concurrent_fork_count: [configuration.concurrent_fork_count]
         | 
| 26 | 
            -
                  }.merge(options)
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                  Leveret.configuration.concurrent_fork_count = options[:concurrent_fork_count]
         | 
| 29 | 
            -
             | 
| 30 | 
            -
                  self.queues = options[:queues].map { |name| Leveret::Queue.new(name) }
         | 
| 18 | 
            +
                # @param [Array<String>] queue_names ([Leveret.configuration.default_queue_name]) A list of queue names for this
         | 
| 19 | 
            +
                #   worker to subscribe to and process
         | 
| 20 | 
            +
                def initialize(*queue_names)
         | 
| 21 | 
            +
                  queue_names << configuration.default_queue_name if queue_names.empty?
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  self.queues = queue_names.map { |name| Leveret::Queue.new(name) }
         | 
| 31 24 | 
             
                  self.consumers = []
         | 
| 32 25 | 
             
                  @time_to_die = false
         | 
| 33 26 | 
             
                end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: leveret
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Dan Wentworth
         | 
| @@ -99,6 +99,7 @@ files: | |
| 99 99 | 
             
            - exe/leveret_worker
         | 
| 100 100 | 
             
            - leveret.gemspec
         | 
| 101 101 | 
             
            - lib/leveret.rb
         | 
| 102 | 
            +
            - lib/leveret/cli.rb
         | 
| 102 103 | 
             
            - lib/leveret/configuration.rb
         | 
| 103 104 | 
             
            - lib/leveret/job.rb
         | 
| 104 105 | 
             
            - lib/leveret/log_formatter.rb
         |