1
0
Fork 0
diversipub/exe/diversipub

73 lines
1.6 KiB
Plaintext
Raw Normal View History

2023-05-02 08:57:39 +00:00
#!/usr/bin/env ruby
# frozen_string_literal: true
2023-05-02 10:38:09 +00:00
gem_name = 'diversipub'
2023-05-10 10:20:56 +00:00
gem_root = File.expand_path('..', __dir__).freeze
2023-05-02 10:38:09 +00:00
begin
require gem_name
rescue LoadError
2023-05-10 10:20:56 +00:00
lib = File.join(gem_root, 'lib').freeze
2023-05-02 10:38:09 +00:00
file = File.join lib, "#{gem_name}.rb"
$LOAD_PATH.unshift lib if File.file?(file) && !$LOAD_PATH.include?(lib)
require gem_name
end
2023-05-03 11:57:36 +00:00
# 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'
2023-05-03 12:02:57 +00:00
# Clean Rack ENVs
ENV.delete 'RACK_MULTIPART_FILE_LIMIT'
ENV.delete 'RACK_MULTIPART_PART_LIMIT'
ENV.delete 'RACK_MULTIPART_TOTAL_PART_LIMIT'
2023-05-03 11:57:36 +00:00
# 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
2023-05-03 12:00:59 +00:00
# Some hacks
module Puma
def self.forkable? = false
end
2023-05-03 11:57:36 +00:00
# Non-buffered output
2023-05-03 11:35:36 +00:00
$stdout.sync = true
$stderr.sync = true
2023-05-02 10:38:09 +00:00
main = Diversipub::Main.new(
2023-05-10 10:20:56 +00:00
gem_root: gem_root,
2023-05-03 12:29:58 +00:00
pwd: Pathname.pwd,
2023-05-02 10:38:09 +00:00
program_name: $PROGRAM_NAME,
argv: ARGV,
env: ENV,
stdin: $stdin,
stdout: $stdout,
stderr: $stderr,
)
2023-05-03 11:59:08 +00:00
trap('INT') { main.stop_gracefully } if Signal.list['INT']
trap('TERM') { main.stop_urgently } if Signal.list['TERM']
2023-05-02 10:38:09 +00:00
exit main.run