diff --git a/pages/lib/refinery/pages/configuration.rb b/pages/lib/refinery/pages/configuration.rb index b2863e926e..6be2553001 100644 --- a/pages/lib/refinery/pages/configuration.rb +++ b/pages/lib/refinery/pages/configuration.rb @@ -8,7 +8,7 @@ module Pages :cache_pages_full, :layout_template_whitelist, :use_layout_templates, :page_title, :absolute_page_links, :types, :auto_expand_admin_tree, :show_title_in_body, - :friendly_id_reserved_words, :layout_templates_pattern, :view_templates_pattern, + :friendly_id_reserved_words, :reserved_paths, :layout_templates_pattern, :view_templates_pattern, :add_whitelist_elements, :add_whitelist_attributes, :whitelist_elements, :whitelist_attributes, :home_page_path @@ -61,9 +61,10 @@ def layout_template_whitelist self.absolute_page_links = false self.types = Types.registered self.auto_expand_admin_tree = true + self.reserved_paths = %w(/rails/active_storage) self.friendly_id_reserved_words = %w( index new session login logout users refinery admin images - ) + ) | self.reserved_paths.map { |path| path.split('/').reject(&:blank?).first}.flatten.uniq self.layout_templates_pattern = 'app', 'views', '{layouts,refinery/layouts}', '*html*' self.view_templates_pattern = 'app', 'views', '{pages,refinery/pages}', '*html*' end diff --git a/pages/lib/refinery/pages/engine.rb b/pages/lib/refinery/pages/engine.rb index 543dc55f01..5b1467558d 100644 --- a/pages/lib/refinery/pages/engine.rb +++ b/pages/lib/refinery/pages/engine.rb @@ -48,7 +48,8 @@ class Engine < ::Rails::Engine def append_marketable_routes Refinery::Core::Engine.routes.append do - get '*path', :to => 'pages#show', :as => :marketable_page + get '*path', :to => 'pages#show', :as => :marketable_page, + constraints: lambda { |request| !Refinery::Pages.config.reserved_paths.any? { |path| request.path.start_with?(path) } } end end diff --git a/pages/spec/controllers/refinery/pages_controller_spec.rb b/pages/spec/controllers/refinery/pages_controller_spec.rb index 6e04a55a45..2e9d86a4df 100644 --- a/pages/spec/controllers/refinery/pages_controller_spec.rb +++ b/pages/spec/controllers/refinery/pages_controller_spec.rb @@ -31,5 +31,11 @@ module Refinery expect(response).to render_template("show") end end + + describe "#show" do + it "does not interfere with active storage" do + expect(:get => "/rails/active_storage").not_to be_routable + end + end end end