📑
stylesheet_link_tag :app を処理しているのは Propshaft
rails new
で作成したビューのテンプレートファイルには、stylesheet_link_tag :app
という記述が含まれます。
app/views/layouts/application.html.erb
<!DOCTYPE html>
<html>
<head>
<title><%= content_for(:title) || "Rails Sample" %></title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">
<%= csrf_meta_tags %>
<%= csp_meta_tag %>
<%= yield :head %>
<%# Enable PWA manifest for installable apps (make sure to enable in config/routes.rb too!) %>
<%#= tag.link rel: "manifest", href: pwa_manifest_path(format: :json) %>
<link rel="icon" href="/icon.png" type="image/png">
<link rel="icon" href="/icon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/icon.png">
<%# Includes all stylesheet files in app/assets/stylesheets %>
<%= stylesheet_link_tag :app, "data-turbo-track": "reload" %>
<%= javascript_importmap_tags %>
</head>
<body>
<%= yield %>
</body>
</html>
この :app
という引数、コメントにもあるように「app/assets/stylesheets
以下の CSS ファイルを全て読み込む」という意味なのですが、この機能は、実は Rails 本体ではなく Propshaft で実装されているものです。
Rails 本体で実装を探しても見つからなかったので、メモとして書いてみました。
(よく読むと、コメントと違って app/assets
以下の CSS ファイルを全て読む実装になっているようです)
Discussion