mirror of
https://github.com/discourse/discourse.git
synced 2024-11-23 20:43:19 +08:00
f3afc8bf85
There is no need to reload the rails server if plugin spec files change, since they are not autoloaded but they are also not loaded into the app.
45 lines
1.5 KiB
Ruby
45 lines
1.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# Development helper which prints a warning when you edit a non-autoloaded ruby file.
|
|
# These include initializers, middleware, plugin.rb files, and more.
|
|
# Launch the server with AUTO_RESTART=0 to disable automatic restarts.
|
|
if Rails.env.development? && !Rails.configuration.cache_classes && Discourse.running_in_rack?
|
|
paths = [
|
|
*Dir["#{Rails.root}/app/*"].reject { |path| path.end_with? "/assets" },
|
|
"#{Rails.root}/config",
|
|
"#{Rails.root}/lib",
|
|
"#{Rails.root}/plugins",
|
|
]
|
|
|
|
Listen
|
|
.to(*paths, only: /\.rb$/) do |modified, added, removed|
|
|
supervisor_pid = UNICORN_DEV_SUPERVISOR_PID
|
|
auto_restart = supervisor_pid && ENV["AUTO_RESTART"] != "0"
|
|
|
|
files = modified + added + removed
|
|
|
|
not_autoloaded =
|
|
files.filter_map do |file|
|
|
autoloaded = Rails.autoloaders.main.__autoloads.key? file
|
|
if !autoloaded && !file.end_with?("spec.rb")
|
|
Pathname.new(file).relative_path_from(Rails.root)
|
|
end
|
|
end
|
|
|
|
if not_autoloaded.length > 0
|
|
message =
|
|
(
|
|
if auto_restart
|
|
"Restarting server..."
|
|
else
|
|
"Server restart required. Automate this by setting AUTO_RESTART=1."
|
|
end
|
|
)
|
|
STDERR.puts "[DEV]: Edited files which are not autoloaded. #{message}"
|
|
STDERR.puts not_autoloaded.map { |path| "- #{path}".indent(7) }.join("\n")
|
|
Process.kill("USR2", supervisor_pid) if auto_restart
|
|
end
|
|
end
|
|
.start
|
|
end
|