mirror of
https://github.com/discourse/discourse.git
synced 2024-11-30 19:36:22 +08:00
d9a02d1336
This reverts commit20780a1eee
. * SECURITY: re-adds accidentally reverted commit: 03d26cd6: ensure embed_url contains valid http(s) uri * when the merge commite62a85cf
was reverted, git chose the2660c2e2
parent to land on instead of the03d26cd6
parent (which contains security fixes)
50 lines
1.2 KiB
Ruby
50 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
def plugin_initialization_guard(&block)
|
|
begin
|
|
block.call
|
|
rescue => error
|
|
plugins_directory = Rails.root + 'plugins'
|
|
|
|
if error.backtrace && error.backtrace_locations
|
|
plugin_path = error.backtrace_locations.lazy.map do |location|
|
|
Pathname.new(location.absolute_path)
|
|
.ascend
|
|
.lazy
|
|
.find { |path| path.parent == plugins_directory }
|
|
end.next
|
|
|
|
raise unless plugin_path
|
|
|
|
stack_trace = error.backtrace.each_with_index.inject([]) do |messages, (line, index)|
|
|
if index == 0
|
|
messages << "#{line}: #{error} (#{error.class})"
|
|
else
|
|
messages << "\t#{index}: from #{line}"
|
|
end
|
|
end.reverse.join("\n")
|
|
|
|
STDERR.puts <<~MESSAGE
|
|
#{stack_trace}
|
|
|
|
** INCOMPATIBLE PLUGIN **
|
|
|
|
You are unable to build Discourse due to errors in the plugin at
|
|
#{plugin_path}
|
|
|
|
Please try removing this plugin and rebuilding again!
|
|
MESSAGE
|
|
else
|
|
STDERR.puts <<~MESSAGE
|
|
** PLUGIN FAILURE **
|
|
|
|
You are unable to build Discourse due to this error during plugin
|
|
initialization:
|
|
|
|
#{error}
|
|
MESSAGE
|
|
end
|
|
exit 1
|
|
end
|
|
end
|