Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

middleman-sprockets fails to start throwing an error #130

Open
alem0lars opened this issue Feb 13, 2018 · 5 comments
Open

middleman-sprockets fails to start throwing an error #130

alem0lars opened this issue Feb 13, 2018 · 5 comments

Comments

@alem0lars
Copy link
Contributor

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
@stevenosloan
Copy link
Collaborator

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

https://github.com/middleman/middleman-sprockets/blob/v3-stable-real/lib/middleman-sprockets/extension.rb#L48

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.

@alem0lars
Copy link
Contributor Author

alem0lars commented Feb 14, 2018 via email

@stevenosloan
Copy link
Collaborator

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 :)

@alem0lars
Copy link
Contributor Author

alem0lars commented Feb 14, 2018

@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

@stevenosloan
Copy link
Collaborator

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants