From 610e25a519a80a6db8e3918bd38c5ff2e1b7d3cc Mon Sep 17 00:00:00 2001 From: James Mead Date: Mon, 22 Jan 2024 13:22:03 +0000 Subject: [PATCH] Move from libsass -> dart-sass I followed these instructions [1]. I'm hoping that this will fix a `SassC::SyntaxError` that I'm seeing after adding `govuk_publishing_components` when running `RAILS_ENV=production rails assets:precompile`. Note that running `bundle install` has removed the `ruby` platform. We think this is because `sass-embedded`, a dependency of `dartsass-rails`, doesn't have a non-platform-specific variant of the gem and so bundler can no longer support the `ruby` platform. [1]: https://docs.publishing.service.gov.uk/manual/migrate-to-dart-sass-from-libsass.html --- .gitignore | 4 ++++ Gemfile | 2 +- Gemfile.lock | 24 ++++++++++-------------- Procfile.dev | 2 ++ app/assets/builds/.keep | 0 app/assets/config/manifest.js | 2 +- bin/dev | 6 ++++++ config/environments/development.rb | 4 ++++ config/initializers/dartsass.rb | 1 + 9 files changed, 29 insertions(+), 16 deletions(-) create mode 100644 Procfile.dev create mode 100644 app/assets/builds/.keep create mode 100755 bin/dev create mode 100644 config/initializers/dartsass.rb diff --git a/.gitignore b/.gitignore index a66a0b1a0..3da8180c1 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,7 @@ config/zendesk.yml # Yarn node_modules yarn-error.log + +# dartsass-rails +/app/assets/builds/* +!/app/assets/builds/.keep diff --git a/Gemfile b/Gemfile index 397097cab..c50cd0613 100644 --- a/Gemfile +++ b/Gemfile @@ -5,6 +5,7 @@ gem "rails", "7.1.3" gem "bootsnap", require: false gem "bootstrap-kaminari-views" gem "cancancan" +gem "dartsass-rails" gem "fog-aws" gem "gds-api-adapters" gem "gds-sso" @@ -17,7 +18,6 @@ gem "jquery-ui-rails", github: "jquery-ui-rails/jquery-ui-rails", tag: "v7.0.0" gem "kaminari" gem "plek" gem "redis" -gem "sassc-rails" gem "select2-rails" gem "sentry-sidekiq" gem "sprockets-rails" diff --git a/Gemfile.lock b/Gemfile.lock index 49857fc74..03451ca59 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -118,6 +118,9 @@ GEM crack (0.4.5) rexml crass (1.0.6) + dartsass-rails (0.5.0) + railties (>= 6.0.0) + sass-embedded (~> 1.63) date (3.3.4) diff-lcs (1.5.0) docile (1.4.0) @@ -174,7 +177,6 @@ GEM zendesk_api (>= 1.37, < 4.0) globalid (1.2.1) activesupport (>= 6.1) - google-protobuf (3.25.1) google-protobuf (3.25.1-aarch64-linux) google-protobuf (3.25.1-arm64-darwin) google-protobuf (3.25.1-x86_64-linux) @@ -263,7 +265,6 @@ GEM mime-types-data (~> 3.2015) mime-types-data (3.2023.1205) mini_mime (1.1.5) - mini_portile2 (2.8.5) minitest (5.21.1) msgpack (1.7.2) multi_json (1.15.0) @@ -283,9 +284,6 @@ GEM net-protocol netrc (0.11.0) nio4r (2.7.0) - nokogiri (1.16.0) - mini_portile2 (~> 2.8.2) - racc (~> 1.4) nokogiri (1.16.0-aarch64-linux) racc (~> 1.4) nokogiri (1.16.0-arm64-darwin) @@ -648,14 +646,14 @@ GEM ruby-progressbar (1.13.0) ruby2_keywords (0.0.5) rubyzip (2.3.2) + sass-embedded (1.70.0-aarch64-linux-gnu) + google-protobuf (~> 3.25) + sass-embedded (1.70.0-arm64-darwin) + google-protobuf (~> 3.25) + sass-embedded (1.70.0-x86_64-linux-gnu) + google-protobuf (~> 3.25) sassc (2.4.0) ffi (~> 1.9) - sassc-rails (2.1.2) - railties (>= 4.0.0) - sassc (>= 2.0) - sprockets (> 3.0) - sprockets-rails - tilt select2-rails (4.0.13) selenium-webdriver (4.16.0) rexml (~> 3.2, >= 3.2.5) @@ -699,7 +697,6 @@ GEM statsd-ruby (1.5.0) stringio (3.1.0) thor (1.3.0) - tilt (2.0.10) timecop (0.9.8) timeliness (0.4.5) timeout (0.4.1) @@ -745,13 +742,13 @@ GEM PLATFORMS aarch64-linux arm64-darwin - ruby x86_64-linux DEPENDENCIES bootsnap bootstrap-kaminari-views cancancan + dartsass-rails factory_bot_rails fog-aws gds-api-adapters @@ -774,7 +771,6 @@ DEPENDENCIES rspec-its rspec-rails rubocop-govuk - sassc-rails select2-rails sentry-sidekiq shoulda diff --git a/Procfile.dev b/Procfile.dev new file mode 100644 index 000000000..852e6c710 --- /dev/null +++ b/Procfile.dev @@ -0,0 +1,2 @@ +web: bin/rails server -p 3000 +css: bin/rails dartsass:watch diff --git a/app/assets/builds/.keep b/app/assets/builds/.keep new file mode 100644 index 000000000..e69de29bb diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js index b16e53d6d..57b152e82 100644 --- a/app/assets/config/manifest.js +++ b/app/assets/config/manifest.js @@ -1,3 +1,3 @@ //= link_tree ../images //= link_directory ../javascripts .js -//= link_directory ../stylesheets .css +//= link_tree ../builds diff --git a/bin/dev b/bin/dev new file mode 100755 index 000000000..a97073e78 --- /dev/null +++ b/bin/dev @@ -0,0 +1,6 @@ +#!/usr/bin/env sh +if ! gem list foreman -i --silent; then + echo "Installing foreman..." + gem install foreman +fi +exec foreman start -f Procfile.dev "$@" diff --git a/config/environments/development.rb b/config/environments/development.rb index 9cd148421..da9fee7db 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -53,6 +53,10 @@ # Suppress logger output for asset requests. config.assets.quiet = true + # Disable digest to see the latest stylesheet changes when running Sass in watch mode + # See https://guides.rubyonrails.org/v7.1.3/asset_pipeline.html#turning-digests-off + config.assets.digest = false + # Raises error for missing translations. # config.i18n.raise_on_missing_translations = true diff --git a/config/initializers/dartsass.rb b/config/initializers/dartsass.rb new file mode 100644 index 000000000..559e9b2ed --- /dev/null +++ b/config/initializers/dartsass.rb @@ -0,0 +1 @@ +Rails.application.config.dartsass.build_options << " --quiet-deps"