Module: Plugin
- Defined in:
- lib/plugin/filter.rb,
lib/plugin.rb,
lib/plugin/metadata.rb,
lib/plugin/filter_manager.rb
Overview
loaded really early
Defined Under Namespace
Classes: CustomEmoji, Filter, FilterManager, Instance, Metadata
Class Method Summary collapse
Class Method Details
.initialization_guard(&block) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/plugin.rb', line 4 def self.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| resolved_path = location.absolute_path || location.path next if resolved_path.nil? Pathname .new(resolved_path) .ascend .lazy .find { |path| path.parent == plugins_directory } end .next raise unless plugin_path stack_trace = error .backtrace .each_with_index .inject([]) do |, (line, index)| if index == 0 << "#{line}: #{error} (#{error.class})" else << "\t#{index}: from #{line}" end end .reverse .join("\n") STDERR.puts <<~TEXT #{stack_trace} ** INCOMPATIBLE PLUGIN ** You are unable to start Discourse due to errors in the plugin at #{plugin_path} Please try removing this plugin and rebuilding again! TEXT else STDERR.puts <<~TEXT ** PLUGIN FAILURE ** You are unable to start Discourse due to this error during plugin initialization: #{error} #{error.backtrace.join("\n")} TEXT end exit 1 end end |