Ruby のテンプレートシステム Slim では,
doctype html
meta charset="utf-8"
title test sass: in Slim
sass:
body
background: orange
h1 Hello
のような感じで,sass:
として Sass コードを埋め込むことができる。
ところが,Sass の処理系として,もはや過去のものとなった sass
gem や sassc
gem でなく,イマドキの sass-embedded
gem を使うと,sass:
のところでエラーが出る。
このことは,以下の記事の「おまけ」の節に少しだけ詳しく書いた。
Slim は死なず - Qiita
これに困っていたのだが,2023 年 11 月 11 日にリリースされた slim バージョン 5.2.0 で sass-embedded に正式に対応し,解決したようだ。
以下のコードで確認できる(5.2.0 の一つ前のバージョンは 5.1.1)。
Gemfile
# frozen_string_literal: true
source "https://rubygems.org"
gem "slim", "= 5.1.1"
# gem "slim", "= 5.2.0"
gem "sass-embedded"
sample.rb
require "bundler"
Bundler.require
slim = Slim::Template.new{<<~SLIM}
doctype html
meta charset="utf-8"
title test sass: in Slim
sass:
body
background: orange
h1 Hello
SLIM
puts slim.render
Gemfile でバージョンを 5.1.1 にすると,エラー
unknown keyword: :cache (ArgumentError)
が出る。
バージョンを 5.2.0 にすると,期待どおり
<!DOCTYPE html><meta charset="utf-8" /><title>test sass: in Slim</title><style>body{background:orange}</style><h1>Hello</h1>
が出力される。
ばんざーい! 関係者の方々,ありがとう〜!
ただ,CHANGES を見ても
5.2.0 (2023-11-11)
* Fix logic less bug - #783
* Support Rails 7.1 - #936
* Fix splat arguments on Rails 7.1 - #942
としか書いてなくて,本件に言及が無い。うーむ? まあ直ったからいいや。