Ruby bindings for grass, a Sass compiler written in Rust.
Compiles SCSS and Sass to CSS using native Rust code via rb-sys and magnus. Provides an API similar to sass-embedded for drop-in replacement in many cases.
Add to your Gemfile:
gem "grass-ruby"Then run bundle install. The gem includes a native Rust extension that will be compiled during installation (requires Rust toolchain).
require "grass"
# Compile a file
result = Grass.compile("path/to/style.scss")
puts result.css
# Compile a string
result = Grass.compile_string("$color: red; .foo { color: $color; }")
puts result.css
# => .foo {
# color: red;
# }
# With options
result = Grass.compile_string(scss, style: :compressed)
result = Grass.compile_string(sass_code, syntax: :sass)
result = Grass.compile("style.scss", load_paths: ["./vendor/styles"])style- Output style::expanded(default) or:compressedsyntax- Input syntax::scss(default),:sass, or:cssload_paths- Array of paths to search for importscharset- Whether to include@charsetdeclaration (default: true)
grass-ruby includes Sprockets integration for Rails applications. Add to your Gemfile:
gem "grass-ruby"The integration registers handlers for .scss and .sass files. It also provides a sassc-rails compatibility shim so gems that check for sassc-rails (like the bootstrap gem) will work.
The asset-url() helper is supported through CSS post-processing.
grass is a pure Rust implementation and does not support some features available in sass-embedded:
- Source maps
- Custom importers
- Custom functions
- Deprecation options (
fatal_deprecations,future_deprecations,silence_deprecations) quiet_deps,verbose,logger
Attempting to use unsupported options raises ArgumentError.
- Ruby >= 3.1
- Rust toolchain (for building the native extension)
MIT License. See LICENSE.txt for details.