mirror of
https://github.com/zammad/zammad
synced 2026-05-24 09:48:36 +00:00
60 lines
1.1 KiB
Ruby
Executable file
60 lines
1.1 KiB
Ruby
Executable file
#!/usr/bin/env ruby
|
|
# Copyright (C) 2012-2016 Zammad Foundation, http://zammad-foundation.org/
|
|
|
|
$LOAD_PATH << './lib'
|
|
require 'rubygems'
|
|
|
|
# load rails env
|
|
dir = File.expand_path(File.join(File.dirname(__FILE__), '..'))
|
|
Dir.chdir dir
|
|
RAILS_ENV = ENV['RAILS_ENV'] || 'development'
|
|
|
|
require 'rails/all'
|
|
require 'bundler'
|
|
require File.join(dir, 'config', 'environment')
|
|
require 'daemons'
|
|
|
|
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
|
|
|
|
$stdout.reopen("#{dir}/log/scheduler_out.log", 'w')
|
|
$stderr.reopen("#{dir}/log/scheduler_err.log", 'w')
|
|
end
|
|
|
|
before_fork
|
|
|
|
daemon_options = {
|
|
multiple: false,
|
|
dir_mode: :normal,
|
|
dir: File.join(dir, 'tmp', 'pids'),
|
|
backtrace: true
|
|
}
|
|
|
|
name = 'scheduler'
|
|
Daemons.run_proc(name, daemon_options) do
|
|
if ARGV.include?('--')
|
|
ARGV.slice! 0..ARGV.index('--')
|
|
else
|
|
ARGV.clear
|
|
end
|
|
|
|
after_fork(dir)
|
|
|
|
require 'scheduler'
|
|
Scheduler.threads
|
|
end
|