rails / cssbundling-rails

Bundle and process CSS in Rails with Tailwind, PostCSS, and Sass via Node.js.
MIT License
565 stars 83 forks source link

"Don't know how to build task 'assets:precompile'" when used without sprockets #58

Closed richardTowers closed 2 years ago

richardTowers commented 2 years ago

I'm seeing a problem running rake --tasks in a rails 7 project which has cssbundling-rails as a dependency but not sprockets.

% ▶ rake --tasks
rake aborted!
Don't know how to build task 'assets:precompile' (See the list of available tasks with `rake --tasks`)
/Users/richardtowers/Projects/sop_mark_two/Rakefile:6:in `<top (required)>'
(See full trace by running task with --trace)
with --trace ``` % ▶ rake --tasks --trace rake aborted! Don't know how to build task 'assets:precompile' (See the list of available tasks with `rake --tasks`) /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/task_manager.rb:59:in `[]' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/task.rb:405:in `[]' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/cssbundling-rails-1.0.0/lib/tasks/cssbundling/build.rake:10:in `
' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/bootsnap-1.9.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:60:in `load' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/bootsnap-1.9.3/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:60:in `load' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/railties-7.0.0/lib/rails/engine.rb:661:in `block in run_tasks_blocks' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/railties-7.0.0/lib/rails/engine.rb:661:in `each' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/railties-7.0.0/lib/rails/engine.rb:661:in `run_tasks_blocks' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/railties-7.0.0/lib/rails/application.rb:501:in `block in run_tasks_blocks' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/railties-7.0.0/lib/rails/engine/railties.rb:15:in `each' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/railties-7.0.0/lib/rails/engine/railties.rb:15:in `each' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/railties-7.0.0/lib/rails/application.rb:501:in `run_tasks_blocks' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/railties-7.0.0/lib/rails/engine.rb:464:in `load_tasks' /Users/richardtowers/Projects/sop_mark_two/Rakefile:6:in `' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/rake_module.rb:29:in `load' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/rake_module.rb:29:in `load_rakefile' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/application.rb:710:in `raw_load_rakefile' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/application.rb:104:in `block in load_rakefile' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/application.rb:103:in `load_rakefile' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/application.rb:82:in `block in run' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/application.rb:186:in `standard_exception_handling' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/rake-13.0.6/lib/rake/application.rb:80:in `run' /Users/richardtowers/.asdf/installs/ruby/3.0.1/lib/ruby/gems/3.0.0/gems/rake-13.0.6/exe/rake:27:in `' /Users/richardtowers/.asdf/installs/ruby/3.0.1/bin/rake:23:in `load' /Users/richardtowers/.asdf/installs/ruby/3.0.1/bin/rake:23:in `
' ```

Note: I'm not trying to run assets:precompile - the error is thrown by rake --tasks.

The trace calls out build.rake:10 which looks like it assumes the assets:precompile task will exist.

Adding gem "sprockets-rails" to my Gemfile fixes the issue, but a749ca29 suggests that "Sprockets is not a dependency", so I think this is a bug.

I can have a go at a PR...

dhh commented 2 years ago

May I ask how you get your assets served if not through sprockets or propshaft?

richardTowers commented 2 years ago

May I ask how you get your assets served if not through sprockets or propshaft?

I didn't actually get that far - I am planning on using sprockets (although I might have a look at propshaft now).

I stumbled across this while upgrading a rails 6 app. The process was something like:

Rails 7 dropped the dependency on Sprockets as well. So I accidentally removed the transient dependency on Sprockets when I upgraded rails and removed sass-rails. I wasn't actually trying to live without sprockets / propshaft.