73 lines
1.6 KiB
Ruby
Executable File
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
|