Rails 6 在开发中不使用 Sprocket / Assets 重新编译 SCSS
Rails 6 not recompiling SCSS using Sprocket / Assets in development
我有一个 Rails 6 个应用程序,我 return 偶尔使用。它为 JS 使用 webpacker,为 CSS 使用 Sprockets(我认为这是默认设置)。如果相关,我正在 WSL 上开发——文件在 Ubuntu 文件系统中,Rails 是 Ubuntu 中的 运行,编辑是使用 VSCode 远程进入WSL.
今天,运行 在开发环境中,我更改了其中一个 SCSS 文件并刷新了我的页面。服务CSS没有更新; Sprockets 没有重新编译它。停止并重新启动服务器并没有提示重新编译(我真的没想到...)。
bin/rails assets:precompile
确实重生了;但我不希望在开发中必须这样做。
如何在开发中的 sprockets 资产管道中 Rails 重新编译更改的 SCSS?
我认为应该相关的我的文件和设置的摘录:
app/assets/config/manifest.js
//= link_tree ../images
//= link_directory ../stylesheets .css
app/assets/stylesheets/application.scss
/*
*= require_tree .
*= require_self
*/
...
app/assets/stylesheets/
还包含characters.scss
,也就是我修改的文件
app/views/layouts/application.html.slim
doctype html
html
head
= csrf_meta_tags
= csp_meta_tag
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
...
config/environments/development.rb
...
# Debug mode disables concatenation and preprocessing of assets.
# This option may cause significant delays in view rendering with a large
# number of complex assets.
config.assets.debug = false
config.assets.compile = true
# ^-- also fails if compile = false
...
Gemfile.lock
...
rails (6.0.3.2)
actioncable (= 6.0.3.2)
actionmailbox (= 6.0.3.2)
actionmailer (= 6.0.3.2)
actionpack (= 6.0.3.2)
actiontext (= 6.0.3.2)
actionview (= 6.0.3.2)
activejob (= 6.0.3.2)
activemodel (= 6.0.3.2)
activerecord (= 6.0.3.2)
activestorage (= 6.0.3.2)
activesupport (= 6.0.3.2)
bundler (>= 1.3.0)
railties (= 6.0.3.2)
sprockets-rails (>= 2.0.0)
sass-rails (6.0.0)
sassc-rails (~> 2.1, >= 2.1.1)
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
sprockets (4.0.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.1)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
...
看起来我的设置是正确的,但我没有意识到 Rails 会更喜欢预编译资产(如果存在的话)。
我运行bin/rails assets:clobber
删除编译版本后,它又回到了实时更新。
我有一个 Rails 6 个应用程序,我 return 偶尔使用。它为 JS 使用 webpacker,为 CSS 使用 Sprockets(我认为这是默认设置)。如果相关,我正在 WSL 上开发——文件在 Ubuntu 文件系统中,Rails 是 Ubuntu 中的 运行,编辑是使用 VSCode 远程进入WSL.
今天,运行 在开发环境中,我更改了其中一个 SCSS 文件并刷新了我的页面。服务CSS没有更新; Sprockets 没有重新编译它。停止并重新启动服务器并没有提示重新编译(我真的没想到...)。
bin/rails assets:precompile
确实重生了;但我不希望在开发中必须这样做。
如何在开发中的 sprockets 资产管道中 Rails 重新编译更改的 SCSS?
我认为应该相关的我的文件和设置的摘录:
app/assets/config/manifest.js
//= link_tree ../images
//= link_directory ../stylesheets .css
app/assets/stylesheets/application.scss
/*
*= require_tree .
*= require_self
*/
...
app/assets/stylesheets/
还包含characters.scss
,也就是我修改的文件
app/views/layouts/application.html.slim
doctype html
html
head
= csrf_meta_tags
= csp_meta_tag
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
...
config/environments/development.rb
...
# Debug mode disables concatenation and preprocessing of assets.
# This option may cause significant delays in view rendering with a large
# number of complex assets.
config.assets.debug = false
config.assets.compile = true
# ^-- also fails if compile = false
...
Gemfile.lock
...
rails (6.0.3.2)
actioncable (= 6.0.3.2)
actionmailbox (= 6.0.3.2)
actionmailer (= 6.0.3.2)
actionpack (= 6.0.3.2)
actiontext (= 6.0.3.2)
actionview (= 6.0.3.2)
activejob (= 6.0.3.2)
activemodel (= 6.0.3.2)
activerecord (= 6.0.3.2)
activestorage (= 6.0.3.2)
activesupport (= 6.0.3.2)
bundler (>= 1.3.0)
railties (= 6.0.3.2)
sprockets-rails (>= 2.0.0)
sass-rails (6.0.0)
sassc-rails (~> 2.1, >= 2.1.1)
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
sprockets (4.0.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.1)
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
...
看起来我的设置是正确的,但我没有意识到 Rails 会更喜欢预编译资产(如果存在的话)。
我运行bin/rails assets:clobber
删除编译版本后,它又回到了实时更新。