Skip to content
This repository was archived by the owner on Jul 23, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ gem 'rufus-scheduler', '~> 3.0.9', require: false
gem 'activesupport'
gem 'corefines', '~> 1.6'
gem 'role_playing', github: 'jnv/role_playing'
gem 'logging'

## For console
gem 'pry', require: false
Expand Down
5 changes: 5 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,10 @@ GEM
celluloid (>= 0.15.2)
rb-fsevent (>= 0.9.3)
rb-inotify (>= 0.9)
little-plugger (1.1.3)
logging (2.0.0)
little-plugger (~> 1.1)
multi_json (~> 1.10)
lumberjack (1.0.9)
method_source (0.8.2)
mime-types (2.4.3)
Expand Down Expand Up @@ -285,6 +289,7 @@ DEPENDENCIES
json_spec (~> 1.1.2)
kosapi_client!
kramdown
logging
pg
pliny (~> 0.2.1)
pry
Expand Down
12 changes: 12 additions & 0 deletions config/initializers/logging.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Logging configuration for the whole app.
#
# For details see https://github.com/TwP/logging

require 'logging'

Logging.logger.root.tap do |root|
root.appenders = Logging.appenders.stdout(
layout: Logging::Layouts.pattern(format_as: :inspect, pattern: '%-5l [%c]: %m\n')
)
root.level = (Config.rack_env == 'production' ? :info : :debug)
end
19 changes: 10 additions & 9 deletions lib/tasks/sirius.rake
Original file line number Diff line number Diff line change
Expand Up @@ -7,61 +7,62 @@ namespace :sirius do
require 'bundler'
Bundler.setup
require File.expand_path('../../lib/initializer', File.dirname(__FILE__))
@logger = Logging.logger['sirius.rake']
end

namespace :events do

desc 'Fetches parallels from KOSapi'
task :import => :env do
puts 'Importing parallels.'
@logger.info 'Importing parallels.'
build_manager.import_parallels
end

desc 'Fetches students from KOSapi'
task :import_students => :env do
puts 'Importing students, grab a coffee.'
@logger.info 'Importing students, grab a coffee.'
build_manager.import_students
end

desc 'Plans stored parallels'
task :plan => :env do
puts 'Planning parallels.'
@logger.info 'Planning parallels.'
build_manager.plan_stored_parallels
end

desc 'Assigns people from parallels to events.'
task :assign_people => :env do
puts 'Assigning people to events.'
@logger.info 'Assigning people to events.'
build_manager.assign_people
end

desc 'Imports exams from KOSapi and generates corresponding events.'
task :import_exams => :env do
puts 'Importing exams.'
@logger.info 'Importing exams.'
build_manager.import_exams
end

desc 'Import students for saved exam events for all active semesters.'
task :import_exam_students => :env do
puts 'Importing exam students.'
@logger.info 'Importing exam students.'
build_manager.import_exam_students
end

desc 'Import course events for all active semesters.'
task :import_course_events => :env do
puts 'Importing course events.'
@logger.info 'Importing course events.'
build_manager.import_course_events
end

desc 'Import course event students for all active semesters.'
task :import_course_event_students => :env do
puts 'Importing course event students.'
@logger.info 'Importing course event students.'
build_manager.import_course_event_students
end

desc 'Recalculates relative sequence number for all existing non-deleted events in active semesters.'
task :renumber => :env do
puts 'Renumbering events.'
@logger.info 'Renumbering events.'
build_manager.renumber_events
end
end
Expand Down
37 changes: 11 additions & 26 deletions script/scheduler
Original file line number Diff line number Diff line change
Expand Up @@ -10,50 +10,35 @@ scheduler = Rufus::Scheduler.new
class SyncHandler
def initialize
require 'sirius/schedule_manager'
require 'pliny/tasks'
Dir['lib/tasks/*.rake'].each { |task| load task }
@logger = Logging.logger[self]
end

def call(job, time)
manager = Sirius::ScheduleManager.new
$stderr.puts "Import started at #{Time.now}"
manager.import_parallels
$stderr.puts "Parallels finished at #{Time.now}"
manager.import_students
$stderr.puts "Students finished at #{Time.now}"
manager.plan_stored_parallels
$stderr.puts "Planning finished at #{Time.now}"
manager.assign_people
$stderr.puts "Assigning people finished at #{Time.now}"
manager.import_exams
$stderr.puts "Importing exams finished at #{Time.now}"
manager.import_exam_students
$stderr.puts "Importing exam students finished at #{Time.now}"
manager.import_course_events
$stderr.puts "Importing course events finished at #{Time.now}"
manager.import_course_event_students
$stderr.puts "Importing course event students finished at #{Time.now}"
manager.renumber_events
$stderr.puts "Renumbering events finished at #{Time.now}"
@logger.info "Scheduled import started."
start = Time.now
Rake::Task['sirius:events'].invoke
finish = Time.now
@logger.info "Scheduled import finished. Time taken: #{finish - start} s."
end
end


def scheduler.on_error(job, error)
begin
Raven.capture_exception(error, logger: 'scheduler', extra: { job: job })
rescue => e
$stderr.puts("Failure in reporting scheduler error to Raven (Sentry).")
$stderr.puts(e.inspect)
$stderr.puts(e.backtrace)
Logging.logger[self].error e
ensure
super
end
end

if Config.sync_schedule
$stderr.puts "Setting automatic sync to '#{Config.sync_schedule}'"
Logging.logger[:scheduler].info "Setting automatic sync to '#{Config.sync_schedule}'"
scheduler.repeat Config.sync_schedule, SyncHandler.new, overlap: false, timeout: '1h'
else
$stderr.puts 'SYNC_SCHEDULE not configured, automatic sync will be disabled'
Logging.logger[:scheduler].info 'SYNC_SCHEDULE not configured, automatic sync will be disabled'
end

scheduler.join