mirror of
https://github.com/discourse/discourse.git
synced 2024-11-27 05:03:37 +08:00
cbaad631a4
Bootsnap is designed to work in production per: https://github.com/Shopify/bootsnap Over the years we have seen very few issues with it, none of which were corruption. This allows us to enable bootsnap in production Having bootsnap enabled means that we can speed up deploys by about 5 seconds per server. It also means a lot less waiting for various production rake tasks and so on.
57 lines
1.7 KiB
Ruby
57 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
if ENV['DISCOURSE_DUMP_HEAP'] == "1"
|
|
require 'objspace'
|
|
ObjectSpace.trace_object_allocations_start
|
|
end
|
|
|
|
require 'rubygems'
|
|
|
|
# Set up gems listed in the Gemfile.
|
|
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
|
|
|
|
require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
|
|
|
|
if (ENV['FORCE_BOOTSNAP'] == '1') || (ENV['RAILS_ENV'] != 'production' && ENV['RAILS_ENV'] != 'profile')
|
|
begin
|
|
require 'bootsnap'
|
|
rescue LoadError
|
|
# not a strong requirement
|
|
end
|
|
|
|
if defined? Bootsnap
|
|
Bootsnap.setup(
|
|
cache_dir: 'tmp/cache', # Path to your cache
|
|
load_path_cache: true, # Should we optimize the LOAD_PATH with a cache?
|
|
autoload_paths_cache: true, # Should we optimize ActiveSupport autoloads with cache?
|
|
disable_trace: false, # Sets `RubyVM::InstructionSequence.compile_option = { trace_instruction: false }`
|
|
compile_cache_iseq: true, # Should compile Ruby code into ISeq cache?
|
|
compile_cache_yaml: false # Skip YAML cache for now, cause we were seeing issues with it
|
|
)
|
|
end
|
|
end
|
|
|
|
# Parallel spec system
|
|
if ENV['RAILS_ENV'] == "test" && ENV['TEST_ENV_NUMBER']
|
|
if ENV['TEST_ENV_NUMBER'] == ''
|
|
n = 1
|
|
else
|
|
n = ENV['TEST_ENV_NUMBER'].to_i
|
|
end
|
|
|
|
port = 10000 + n
|
|
|
|
STDERR.puts "Setting up parallel test mode - starting Redis #{n} on port #{port}"
|
|
|
|
`rm -rf tmp/test_data_#{n} && mkdir -p tmp/test_data_#{n}/redis`
|
|
pid = Process.spawn("redis-server --dir tmp/test_data_#{n}/redis --port #{port}", out: "/dev/null")
|
|
|
|
ENV["DISCOURSE_REDIS_PORT"] = port.to_s
|
|
ENV["RAILS_DB"] = "discourse_test_#{n}"
|
|
|
|
at_exit do
|
|
Process.kill("SIGTERM", pid)
|
|
Process.wait
|
|
end
|
|
end
|