1
0
Fork 0
diversipub/exe/diversipub

73 lines
1.6 KiB
Ruby
Executable File

#!/usr/bin/env ruby
# frozen_string_literal: true
gem_name = 'diversipub'
gem_root = File.expand_path('..', __dir__).freeze
begin
require gem_name
rescue LoadError
lib = File.join(gem_root, 'lib').freeze
file = File.join lib, "#{gem_name}.rb"
$LOAD_PATH.unshift lib if File.file?(file) && !$LOAD_PATH.include?(lib)
require gem_name
end
# Clean common ENVs
ENV.delete 'APP_ENV'
ENV.delete 'RACK_ENV'
ENV.delete 'RAILS_ENV'
# Clean Puma ENVs
ENV.delete 'LISTEN_FDS'
ENV.delete 'LISTEN_PID'
ENV.delete 'MAX_THREADS'
ENV.delete 'MIN_THREADS'
ENV.delete 'NOTIFY_SOCKET'
ENV.delete 'PUMA_BUNDLER_PRUNED'
ENV.delete 'PUMA_DEBUG'
ENV.delete 'PUMA_LOG_CONFIG'
ENV.delete 'PUMA_MAX_THREADS'
ENV.delete 'PUMA_MIN_THREADS'
ENV.delete 'SCRIPT_NAME'
ENV.delete 'WATCHDOG_PID'
ENV.delete 'WATCHDOG_USEC'
ENV.delete 'WEB_CONCURRENCY'
# Clean Rack ENVs
ENV.delete 'RACK_MULTIPART_FILE_LIMIT'
ENV.delete 'RACK_MULTIPART_PART_LIMIT'
ENV.delete 'RACK_MULTIPART_TOTAL_PART_LIMIT'
# Freeze well-known constants
ARGV.each(&:freeze).freeze
ENV.each_key(&:freeze).each_value(&:freeze) # ENV itself can't be frozen
# Freeze well-known globals
$ARGV&.each(&:freeze).freeze # $ARGV is nil sometimes
$LOAD_PATH.each(&:freeze).freeze
# Some hacks
module Puma
def self.forkable? = false
end
# Non-buffered output
$stdout.sync = true
$stderr.sync = true
main = Diversipub::Main.new(
gem_root: gem_root,
pwd: Pathname.pwd,
program_name: $PROGRAM_NAME,
argv: ARGV,
env: ENV,
stdin: $stdin,
stdout: $stdout,
stderr: $stderr,
)
trap('INT') { main.stop_gracefully } if Signal.list['INT']
trap('TERM') { main.stop_urgently } if Signal.list['TERM']
exit main.run