Rails 3.1: Determine if asset exists
Solution 1:
Given an image in app/assets/images/lolshirts/theme/bg-header.png
,
Rails.application.assets.find_asset 'lolshirts/theme/bg-header.png'
=> #> Sprockets::StaticAsset:0x80c388ec pathname="/Users/joevandyk/projects/tanga/sites/lolshirts/app/assets/images/lolshirts/theme/bg-header.png", mtime=2011-10-07 12:34:48 -0700, digest="a63cc84aca38e2172ae25de3d837c71a">
Rails.application.assets.find_asset 'notthere.png'
=> nil
Solution 2:
Since this is still the top question when searching Google, and since the accepted answer does not work properly in production (at least in some cases), here is the solution that works for me (Rails 4.x to 6.x at least):
def asset_exist?(path)
if Rails.configuration.assets.compile
Rails.application.precompiled_assets.include? path
else
Rails.application.assets_manifest.assets[path].present?
end
end
This is copied from this github issue
Solution 3:
See this answer: https://stackoverflow.com/a/8217598/549252
= Rails.application.assets.find_asset("my_asset.css").nil?