2013-03-10 23:14:31 +00:00
|
|
|
#!/usr/bin/env ruby
|
2016-10-19 03:11:36 +00:00
|
|
|
# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
|
2013-06-13 07:01:06 +00:00
|
|
|
|
2013-03-10 23:14:31 +00:00
|
|
|
$LOAD_PATH << './lib'
|
|
|
|
require 'rubygems'
|
2017-04-27 07:34:40 +00:00
|
|
|
|
|
|
|
# load rails env
|
2013-03-10 23:14:31 +00:00
|
|
|
dir = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
2017-04-27 07:34:40 +00:00
|
|
|
Dir.chdir dir
|
|
|
|
RAILS_ENV = ENV['RAILS_ENV'] || 'development'
|
|
|
|
|
|
|
|
require 'rails/all'
|
|
|
|
require 'bundler'
|
|
|
|
require File.join(dir, 'config', 'environment')
|
|
|
|
require 'daemons'
|
2013-03-10 23:14:31 +00:00
|
|
|
|
2017-05-08 14:05:38 +00:00
|
|
|
def before_fork
|
|
|
|
|
|
|
|
# remember open file handles
|
|
|
|
@files_to_reopen = []
|
|
|
|
ObjectSpace.each_object(File) do |file|
|
|
|
|
@files_to_reopen << file unless file.closed?
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def after_fork(dir)
|
|
|
|
Dir.chdir dir
|
|
|
|
|
|
|
|
# Re-open file handles
|
|
|
|
@files_to_reopen.each do |file|
|
|
|
|
file.reopen file.path, 'a+'
|
|
|
|
file.sync = true
|
|
|
|
end
|
|
|
|
|
2017-05-15 13:09:02 +00:00
|
|
|
$stdout.reopen("#{dir}/log/scheduler_out.log", 'w')
|
|
|
|
$stderr.reopen("#{dir}/log/scheduler_err.log", 'w')
|
2017-05-08 14:05:38 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
before_fork
|
|
|
|
|
2013-03-10 23:14:31 +00:00
|
|
|
daemon_options = {
|
2015-06-05 14:23:03 +00:00
|
|
|
multiple: false,
|
2015-04-27 13:42:53 +00:00
|
|
|
dir_mode: :normal,
|
|
|
|
dir: File.join(dir, 'tmp', 'pids'),
|
|
|
|
backtrace: true
|
2013-03-10 23:14:31 +00:00
|
|
|
}
|
|
|
|
|
2015-05-20 23:07:13 +00:00
|
|
|
name = 'scheduler'
|
2014-02-03 18:27:27 +00:00
|
|
|
Daemons.run_proc(name, daemon_options) do
|
2017-08-14 10:03:03 +00:00
|
|
|
|
2014-02-03 18:27:27 +00:00
|
|
|
if ARGV.include?('--')
|
|
|
|
ARGV.slice! 0..ARGV.index('--')
|
|
|
|
else
|
|
|
|
ARGV.clear
|
|
|
|
end
|
|
|
|
|
2017-05-08 14:05:38 +00:00
|
|
|
after_fork(dir)
|
2014-02-03 18:27:27 +00:00
|
|
|
|
2017-08-14 10:03:03 +00:00
|
|
|
Rails.logger.info 'Scheduler started.'
|
|
|
|
|
|
|
|
at_exit do
|
|
|
|
Rails.logger.info 'Scheduler stopped.'
|
|
|
|
end
|
|
|
|
|
2017-04-27 07:34:40 +00:00
|
|
|
require 'scheduler'
|
2015-05-20 23:07:13 +00:00
|
|
|
Scheduler.threads
|
2014-02-03 18:27:27 +00:00
|
|
|
end
|