Sha256: 8bdff4ef3877912ffb80e5e545758457b5afdd4f1d42dd732ef39d6b02de94da

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

# encoding: utf-8
require 'daemons'
require 'optparse'

module ZmeygoSync
  class Command

    attr_accessor :options, :client

    def initialize(args ={})
       @options = {
        :verbose => false,
        :pid_dir => "#{Rails.root}/tmp/pids",
        :sleep_delay => 60,
        :debug => false # when debug is false - it will daomonize, otherwise - it won't
      }

      @monitor = false

      opts = OptionParser.new do |opts|
        opts.banner = "Usage: #{File.basename($0)} [options] start|stop|restart|run"

        opts.on('-h', '--help', 'Show this message') do
          puts opts
          exit 1
        end
        opts.on('-s','--sleep-delay N', "Amount of time to sleep when no jobs are found") do |n|
          @options[:sleep_delay] = n.to_i
        end
        opts.on('-v','--verbose', "verbosity") do
          @options[:verbose] = true
        end
        opts.on('-d','--debug', "debug mode, don't daemonize") do
          @options[:debug] = true
        end
      end
      @args = opts.parse!(args)

      ZmeygoSync.configure

      self.options = @options
      self.client = ZmeygoSync::Client.new(@options)

    end

    def run
      unless defined?(Rails)
        raise "This is not rails app???"
      end
      step = 0
      loop do
        self.client.push
        # once in 5 minutes download locales from server
        if step % 10 == 0
          self.client.pull
        end
        step += 1
        if step > 1_000
          step = 0
        end
        sleep(@options[:sleep_delay])
      end
    rescue => e
   #   Rails.logger.fatal e
      STDERR.puts e.message
      exit 1
    end

    def daemonize
      if @options[:debug]
        run
      else
        Daemons.run_proc('zmeygo_sync') { run }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
zmeygo_sync-0.21 lib/zmeygo_sync/command.rb