Class: Konstant::Scheduler
- Inherits:
-
Object
- Object
- Konstant::Scheduler
- Defined in:
- lib/konstant/scheduler.rb
Instance Method Summary collapse
Instance Method Details
#project_worker(project_id) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/konstant/scheduler.rb', line 24 def project_worker(project_id) Thread.new do project = Konstant::Project.new(project_id) Konstant.logger.info "started worker for project '#{project.id}'" until Konstant.shutdown? do Konstant.logger.debug "polling project '#{project.id}'" if File.exists?("#{project.path}/run.txt") system "rm #{project.path}/run.txt" begin system "touch #{project.path}/running.txt" Konstant::Builder.new(project).run rescue => e puts e. puts e.backtrace ensure system "rm #{project.path}/running.txt" end else sleep Konstant.config["build_check_interval"] end end end end |
#run ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/konstant/scheduler.rb', line 3 def run @threads = {} until Konstant.shutdown? do project_paths = Dir["#{Konstant.config['data_dir']}/projects/*"] project_ids = project_paths.map{|path| path.split('/').last} (project_ids - @threads.keys).each do |project_id| @threads[project_id] = project_worker(project_id) end (@threads.keys - project_ids).each do |project_id| thread = @thread.delete project_id thread.kill Konstant.logger.info "stopped worker for project '#{project_id}'" end sleep Konstant.config['new_projects_interval'] end end |