middleman-sprockets fails to start throwing an error
alem0lars opened this issue · comments
Expected behavior and actual behavior
middleman-sprockets
fails to start throwing the following error:
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.1.10/lib/middleman-core/sitemap/resource.rb:88: warning: constant ::Fixnum is deprecated
NoMethodError: undefined method `include' for #<Middleman::Application:0x47451094074920>
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/bundler/gems/middleman-sprockets-55fe2ee8a260/lib/middleman-sprockets/extension.rb:51:in `initialize'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.1.10/lib/middleman-core/extension_manager.rb:66:in `new'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.1.10/lib/middleman-core/extension_manager.rb:66:in `activate'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.1.10/lib/middleman-core/extensions.rb:120:in `block in auto_activate'
/usr/lib/ruby/2.5.0/set.rb:338:in `each_key'
/usr/lib/ruby/2.5.0/set.rb:338:in `each'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.1.10/lib/middleman-core/extensions.rb:117:in `auto_activate'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.1.10/lib/middleman-core/extension_manager.rb:28:in `auto_activate'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.1.10/lib/middleman-core/extension_manager.rb:20:in `block (2 levels) in initialize'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.1.10/lib/middleman-core/callback_manager.rb:57:in `instance_exec'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.1.10/lib/middleman-core/callback_manager.rb:57:in `block in execute'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/hamster-3.0.0/lib/hamster/vector.rb:1316:in `each'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/hamster-3.0.0/lib/hamster/vector.rb:1316:in `traverse_depth_first'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/hamster-3.0.0/lib/hamster/vector.rb:431:in `each'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.1.10/lib/middleman-core/callback_manager.rb:57:in `execute'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/contracts-0.13.0/lib/contracts/method_reference.rb:43:in `send_to'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/contracts-0.13.0/lib/contracts/call_with.rb:76:in `call_with'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/contracts-0.13.0/lib/contracts/method_handler.rb:138:in `block in redefine_method'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.1.10/lib/middleman-core/callback_manager.rb:28:in `block in install_methods!'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/middleman-core-4.1.10/lib/middleman-core/application.rb:279:in `initialize'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/middleman-cli-4.1.10/bin/middleman:51:in `new'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/gems/middleman-cli-4.1.10/bin/middleman:51:in `<top (required)>'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/bin/middleman:23:in `load'
/data/projects/work/cel/cel-web-frontend/vendor/bundle/ruby/2.5.0/bin/middleman:23:in `<top (required)>'
Steps to reproduce the problem (from a clean middleman installation) or example repo
Gemfile:
gem "middleman"
gem "middleman-sprockets",
git: "https://github.com/middleman/middleman-sprockets",
branch: "v3-stable-real"
Additional information
- Ruby version:
2.5.0
- Middleman version:
4.1.10
- Middleman Sprockets version: branch
v3-stable-real
- OS version: Linux
It looks like at some point during the middleman 4.0 development, the method middleman-sprockets is using as a v4 check changed names via changelog:
rename app.add_to_config_context to Extension.expose_to_config for adding extension-local methods to the sandboxed scope of config.rb
If you're game to switch that out & test it'd be super helpful.
Also, since you are running middleman 4, I'd suggest updating to using middleman-sprockets 4+ since it has been developed much more recently with middleman 4 compat in mind.
IIRC adding paths to sprockets changed a little bit, the upgrade guide may help. If you can share your config.rb
and some of your asset paths I'm happy to help as well :)
@stevenosloan Thanks for the response :) Here are the information requested:
These are the versions of middleman
and middleman-sprockets
:
gem "middleman", "4.2.1"
gem "middleman-sprockets", "4.1.1"
This is the relevant part of config.rb
:
activate :sprockets do |c|
# Expose middleman helpers to rendering context
c.expose_middleman_helpers = true
end
# Add components installed with Bower to the Sprockets path
bower_config = JSON.parse(IO.read("#{root}/.bowerrc"))
sprockets.append_path(File.join(root, bower_config["directory"]))
# Add vendored components to the Sprockets path
sprockets.append_path(File.join(root, config.source, "vendor"))
Where .bowerrc
is:
{
"directory" : "vendor"
}
In fact, I've installed PreloadJS at vendor
directory:
$ ls vendor/PreloadJS/lib
preloadjs-NEXT.js preloadjs-NEXT.min.js preloadjs.js preloadjs.min.js
However in a source CoffeeScript file I've defined a require statement of preloadjs-NEXT.combined
:
#= require "PreloadJS/lib/preloadjs-NEXT.combined"
That gives error:
Error: Sprockets::FileNotFound: couldn't find file 'PreloadJS/lib/preloadjs-NEXT.combined' with type 'application/javascript'
Checked in these paths:
/data/projects/work/cel/cel-web-frontend/vendor
/data/projects/work/cel/cel-web-frontend/source/vendor
/data/projects/work/cel/cel-web-frontend/source/assets/js
/data/projects/work/cel/cel-web-frontend/source/assets/css
/data/projects/work/cel/cel-web-frontend/source
on line 4 of /data/projects/work/cel/cel-web-frontend/source/assets/js/for_components/preload_manager.js.coffee)
I would be really glad to you if you can help me..
Thanks
One thing I see is that there doesn't appear to be a preloadjs-NEXT.combined.js
file in your vendor/PreloadJS/lib
directory. Looks like they changed that once they released 1.0.1
, I think if you change your require statement to
#= require "PreloadJS/lib/preloadjs-NEXT"
that'll be what you want.