平々凡々エンジニア

平凡で難しい悩みを解決

ずっとよくわからなかったrails cssの読み込み(深読みしすぎてた)がわかった

自分の常識にとらわれていました。

html.erbファイルに<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>を記載すると assets/stylesheets/application.cssを読むこむのはわかってたんですが なんで関係のなさそうなassets/stylesheets/custom.cssも読み込んでるのかがわかりませんでした。

assets/stylesheets/application.cssには以下の内容が書かれていました。

/ * This is a manifest file that'll be compiled into application.css, which will include all the files * listed below. * * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's * vendor/assets/stylesheets directory can be referenced here using a relative path. * * You're free to add application-wide styles to this file and they'll appear at the bottom of the * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS * files in this directory. Styles in this file should be added after the last require_ statement. * It is generally better to create a new file per style scope. * = require_tree . = require_self */

直訳された解説では、*= require_tree .は、全てのCSSを統合して適応するという内容が記載されていたのですが(railsチュートリアル等) コメントを付けた状態ではないと読み込むのか読み込まないのか明確に記載されていませんでした。 私が触ってきた言語では、基本的にコメントは処理に影響しないものとしてメモのような書き方ができる認識でしたので もし仮にこのコメントで記載されたものが処理として読み込まれるならば自分の常識が覆るので慎重に調べることにしました。 しかし誰も私のように疑問を持つものはいなく、知人でrailsをよく触っている方もいなかったのでterateilで質問し やっと回答がもらえました。どうやら、コメントで記載されたものがコードとして読み込まれるようです。

参考:rails cssの読み込み方

以下余談 プログラミングをしている友人に「こんな細かいことを調べる余裕があるならわからないなりにポートフォリオを作成しろ」と言われているのですが 逆に私が「こういうわからないことを調べるのが重要なのではないか?」と反論すると「超絶正しい」と言われました。 「だけれどもあえて言わせてもらうとその調子ではいくら時間があっても足りないのではないか?」と言われました。 確かに時間はかかるけどわかないものをわからないなりに使うのはセキュリティ面における危うさや バグ修正のやりやすさが段違いだと思いわからないことをとことん調べる姿勢を変えようとは思いませんでした。