From 5e69cc0335936c50099f5df94eebe8b087b5be7e Mon Sep 17 00:00:00 2001 From: Marwin Hochfelsner <50826859+hlfan@users.noreply.github.com> Date: Wed, 4 Mar 2026 09:26:38 +0000 Subject: [PATCH] Make AssetHelper work without precompiled assets --- app/helpers/asset_helper.rb | 16 ++++++++++++++-- test/helpers/asset_helper_test.rb | 4 +++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/app/helpers/asset_helper.rb b/app/helpers/asset_helper.rb index 2a233a802..238c61fc0 100644 --- a/app/helpers/asset_helper.rb +++ b/app/helpers/asset_helper.rb @@ -2,8 +2,20 @@ module AssetHelper def assets(directory) - Rails.application.assets_manifest.assets.keys.each_with_object({}) do |asset, assets| - assets[asset] = asset_path(asset) if asset.start_with?("#{directory}/") + if (manifest = Rails.application.assets_manifest.assets) && !manifest.empty? + # With precompiled assets + manifest.keys.each_with_object({}) do |asset, assets| + assets[asset] = asset_path(asset) if asset.start_with?("#{directory}/") + end + elsif (env = Rails.application.assets) && env.present? + # Without precompiled assets + env.paths + .filter { |path| path.include?(directory) } + .flat_map { |path| Dir.glob(File.join(path, "**", "*")) } + .filter_map { |path| env.find_asset(path) } + .each_with_object({}) do |asset, assets| + assets[asset.logical_path] = asset_path(asset.logical_path) if asset.logical_path.start_with?("#{directory}/") + end end end end diff --git a/test/helpers/asset_helper_test.rb b/test/helpers/asset_helper_test.rb index f0de47286..c935de207 100644 --- a/test/helpers/asset_helper_test.rb +++ b/test/helpers/asset_helper_test.rb @@ -4,6 +4,8 @@ require "test_helper" class AssetHelperTest < ActionView::TestCase def test_assets - assert_kind_of Hash, assets("iD") + asset_map = assets("@openstreetmap/id") + assert_kind_of Hash, asset_map + assert_operator asset_map.length, :>, 0 end end -- 2.39.5