Protect the global environment

This commit is contained in:
Alex Kotov 2023-05-03 15:57:36 +04:00
parent e0715efb64
commit ef063bc92a
Signed by: kotovalexarian
GPG key ID: 553C0EBBEB5D5F08

View file

@ -12,6 +12,36 @@ rescue LoadError
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'
# 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
# Non-buffered output
$stdout.sync = true
$stderr.sync = true