FEATURE: Allow plugins to dynamically add seed fixture paths

This is useful if your plugin wants different seed data for different
locales for example.
This commit is contained in:
Robin Ward
2017-11-16 14:42:38 -05:00
parent 3d145a588f
commit 966c7e7f07
3 changed files with 23 additions and 2 deletions

View File

@ -64,6 +64,10 @@ class DiscoursePluginRegistry
@html_builders ||= {}
end
def seed_path_builders
@seed_path_builders ||= Set.new
end
def vendored_pretty_text
@vendored_pretty_text ||= Set.new
end
@ -136,6 +140,10 @@ class DiscoursePluginRegistry
self.seed_data[key] = value
end
def self.register_seed_path_builder(&block)
seed_path_builders << block
end
def self.register_html_builder(name, &block)
html_builders[name] ||= []
html_builders[name] << block
@ -146,6 +154,14 @@ class DiscoursePluginRegistry
builders.map { |b| b.call(ctx) }.join("\n").html_safe
end
def self.seed_paths
result = SeedFu.fixture_paths.dup
unless Rails.env.test? && ENV['LOAD_PLUGINS'] != "1"
seed_path_builders.each { |b| result += b.call }
end
result
end
def javascripts
self.class.javascripts
end
@ -190,6 +206,7 @@ class DiscoursePluginRegistry
asset_globs.clear
html_builders.clear
vendored_pretty_text.clear
seed_path_builders.clear
end
def self.setup(plugin_class)