Module: Pushpop

Defined in:
lib/pushpop.rb,
lib/pushpop/cli.rb,
lib/pushpop/job.rb,
lib/pushpop/web.rb,
lib/pushpop/step.rb,
lib/pushpop/version.rb

Defined Under Namespace

Classes: CLI, Job, Step, Web

Constant Summary collapse

VERSION =
'0.4.0'
@@jobs =
[]
@@logger =
lambda {
  logger = Logger.new($stdout)
  if ENV['DEBUG']
    logger.level = Logger::DEBUG
  elsif ENV['RACK_ENV'] == 'test'
    logger.level = Logger::FATAL
  else
    logger.level = Logger::INFO
  end
  logger
}.call

Class Method Summary collapse

Class Method Details

.add_job(name = nil, &block) ⇒ Object



60
61
62
63
# File 'lib/pushpop.rb', line 60

def add_job(name=nil, &block)
  self.jobs.push(Job.new(name, &block))
  self.jobs.last
end

.jobsObject



30
31
32
# File 'lib/pushpop.rb', line 30

def jobs
  @@jobs
end

.load_plugin(name) ⇒ Object



96
97
98
# File 'lib/pushpop.rb', line 96

def load_plugin(name)
  load "#{File.expand_path("../plugins/#{name}", __FILE__)}.rb"
end

.loggerObject



26
27
28
# File 'lib/pushpop.rb', line 26

def logger
  @@logger
end

.random_nameObject

for jobs and steps



56
57
58
# File 'lib/pushpop.rb', line 56

def random_name
  (0...8).map { (65 + rand(26)).chr }.join
end

.require_file(file = nil) ⇒ Object Also known as: load_jobs



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/pushpop.rb', line 79

def require_file(file = nil)
  if file
    if File.directory?(file)
      Dir.glob("#{file}/**/*.rb").each { |file|
        load "#{Dir.pwd}/#{file}"
      }
    else
      load file
    end
  else
    Dir.glob("#{Dir.pwd}/jobs/**/*.rb").each { |file|
      load file
    }
  end
end

.runObject



65
66
67
# File 'lib/pushpop.rb', line 65

def run
  self.jobs.map &:run
end

.scheduleObject



69
70
71
# File 'lib/pushpop.rb', line 69

def schedule
  self.jobs.map &:schedule
end

.start_clockObject



73
74
75
76
77
# File 'lib/pushpop.rb', line 73

def start_clock
  Thread.new do
    Clockwork.manager.run
  end
end

.start_webserverObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/pushpop.rb', line 38

def start_webserver
  # If we start this thread with no routes, it will throw off the all_waits listener
  # and we don't want to start the web server willy nilly, because it looks weird
  # on the CLI interface
  if web.routes.length > 0
    Thread.new do
      if ENV['PORT']
        @web.app.run! :port => ENV['PORT']
      else
        @web.app.run!
      end
    end
  else
    false
  end
end

.webObject



34
35
36
# File 'lib/pushpop.rb', line 34

def web
  @web ||= Web.new
end