Skip to content

Commit 77bac2d

Browse files
authored
Merge pull request #60 from rmacklin/decouple-from-sprockets-rails
Decouple from sprockets-rails
2 parents 8d66a09 + 313e2cf commit 77bac2d

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

lib/importmap/engine.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ module Importmap
77
class Engine < ::Rails::Engine
88
config.importmap = ActiveSupport::OrderedOptions.new
99
config.importmap.sweep_cache = Rails.env.development? || Rails.env.test?
10+
config.importmap.rescuable_asset_errors = []
1011

1112
config.autoload_once_paths = %W( #{root}/app/helpers )
1213

@@ -49,5 +50,11 @@ class Engine < ::Rails::Engine
4950
helper Importmap::ImportmapTagsHelper
5051
end
5152
end
53+
54+
initializer 'importmap.rescuable_asset_errors' do |app|
55+
if defined?(Sprockets::Rails)
56+
app.config.importmap.rescuable_asset_errors << Sprockets::Rails::Helper::AssetNotFound
57+
end
58+
end
5259
end
5360
end

lib/importmap/map.rb

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,21 @@ def clear_cache
8787
@cached_preloaded_module_paths = nil
8888
end
8989

90+
def rescuable_asset_error?(error)
91+
Rails.application.config.importmap.rescuable_asset_errors.any? { |e| error.is_a?(e) }
92+
end
93+
9094
def resolve_asset_paths(paths, resolver:)
9195
paths.transform_values do |mapping|
9296
begin
9397
resolver.asset_path(mapping.path)
94-
rescue Sprockets::Rails::Helper::AssetNotFound
95-
Rails.logger.warn "Importmap skipped missing path: #{mapping.path}"
96-
nil
98+
rescue => e
99+
if rescuable_asset_error?(e)
100+
Rails.logger.warn "Importmap skipped missing path: #{mapping.path}"
101+
nil
102+
else
103+
raise e
104+
end
97105
end
98106
end.compact
99107
end

0 commit comments

Comments
 (0)