mirror of
https://github.com/discourse/discourse.git
synced 2026-03-03 22:05:52 +08:00
This logic can sometimes have false positives (e.g. when launching server through bin/qunit --standalone). The performance difference is negligible compared to the overall Rails boot time, so fixing it is not a priority.
80 lines
1.9 KiB
Ruby
Executable file
80 lines
1.9 KiB
Ruby
Executable file
#!/usr/bin/env ruby
|
|
# frozen_string_literal: true
|
|
|
|
require "pathname"
|
|
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", Pathname.new(__FILE__).realpath)
|
|
|
|
require "rubygems"
|
|
require "bundler/setup"
|
|
require "fileutils"
|
|
|
|
dev_mode = false
|
|
|
|
# in development do some fussing around, to automate config
|
|
if !ARGV.include?("-E") && !ARGV.include?("--env") &&
|
|
(%w[development test].include?(ENV["RAILS_ENV"]) || !ENV["RAILS_ENV"])
|
|
dev_mode = true
|
|
|
|
if !ARGV.include?("-c") && !ARGV.include?("--config-file")
|
|
ARGV.push("-c")
|
|
ARGV.push(File.expand_path("../../config/pitchfork.conf.rb", Pathname.new(__FILE__).realpath))
|
|
end
|
|
|
|
# we do not want to listen on 2 ports, so lets fix it
|
|
if (idx = ARGV.index("-p")) && (port = ARGV[idx + 1].to_i) > 0
|
|
ENV["UNICORN_PORT"] ||= port.to_s
|
|
end
|
|
|
|
ENV["UNICORN_PORT"] ||= "9292"
|
|
|
|
if ARGV.delete("-x")
|
|
puts "Running without sidekiq"
|
|
ENV["UNICORN_SIDEKIQS"] = "0"
|
|
end
|
|
|
|
ENV["UNICORN_SIDEKIQS"] ||= "1"
|
|
end
|
|
|
|
if ARGV.include?("--help")
|
|
fork { load Gem.bin_path("pitchfork", "pitchfork") }
|
|
Process.wait
|
|
puts "Extra Discourse Options:"
|
|
puts " -x run without sidekiq"
|
|
exit
|
|
end
|
|
|
|
# this dev_mode hackery enables the following to be used to restart pitchfork:
|
|
#
|
|
# pkill -USR2 -f 'ruby bin/pitchfork'
|
|
#
|
|
# This is handy if you want to bind a key to restarting pitchfork in dev
|
|
|
|
if dev_mode
|
|
UNICORN_DEV_SUPERVISOR_PID = Process.pid
|
|
|
|
restart = true
|
|
while restart
|
|
restart = false
|
|
pid = fork { load Gem.bin_path("pitchfork", "pitchfork") }
|
|
done = false
|
|
|
|
Signal.trap("INT") do
|
|
# wait for parent to be done
|
|
end
|
|
|
|
Signal.trap("USR2") do
|
|
Process.kill("QUIT", pid)
|
|
puts "RESTARTING PITCHFORK"
|
|
restart = true
|
|
end
|
|
|
|
Signal.trap("TERM") { Process.kill("TERM", pid) }
|
|
|
|
while !done
|
|
sleep 1
|
|
done = Process.waitpid(pid, Process::WNOHANG)
|
|
end
|
|
end
|
|
else
|
|
load Gem.bin_path("pitchfork", "pitchfork")
|
|
end
|