sprockets: sprockets 3 doesn't work without CoffeeScript?

From @pmontrasio on May 3, 2015 11:4

I have a Rails project in which I disabled CoffeeScript by commenting it out in the generated Gemfile (I’m not using CS, only plain JS).

I removed Gemfile.lock and run bundle to get new versions of all the gems today. Sprocket has been upgraded to 3.0.3 from 2.12.3. Unfortunately the application doesn’t work anymore. This is the error I get when trying to load the home page.

LoadError in HomeController#index
cannot load such file -- coffee_script
Extracted source (around line #274):

272 def require(file)
273   result = false
274   load_dependency(file) { result = super }
275   result
276   end
277 end

Rails.root: /home/me/project
Application Trace | Framework Trace | Full Trace

activesupport (4.2.1) lib/active_support/dependencies.rb:274:in `require'
activesupport (4.2.1) lib/active_support/dependencies.rb:274:in `block in require'
activesupport (4.2.1) lib/active_support/dependencies.rb:240:in `load_dependency'
activesupport (4.2.1) lib/active_support/dependencies.rb:274:in `require'
sprockets (3.0.3) lib/sprockets/autoload/coffee_script.rb:1:in `<top (required)>'
sprockets (3.0.3) lib/sprockets/coffee_script_processor.rb:15:in `cache_key'
sprockets (3.0.3) lib/sprockets/coffee_script_processor.rb:20:in `call'
sprockets (3.0.3) lib/sprockets/processor_utils.rb:75:in `call_processor'
sprockets (3.0.3) lib/sprockets/processor_utils.rb:57:in `block in call_processors'
sprockets (3.0.3) lib/sprockets/processor_utils.rb:56:in `reverse_each'
sprockets (3.0.3) lib/sprockets/processor_utils.rb:56:in `call_processors'
sprockets (3.0.3) lib/sprockets/loader.rb:87:in `load_asset_by_uri'
sprockets (3.0.3) lib/sprockets/loader.rb:45:in `block in load'
sprockets (3.0.3) lib/sprockets/loader.rb:157:in `fetch_asset_from_dependency_cache'
sprockets (3.0.3) lib/sprockets/loader.rb:38:in `load'
sprockets (3.0.3) lib/sprockets/cached_environment.rb:20:in `block in initialize'
sprockets (3.0.3) lib/sprockets/cached_environment.rb:47:in `yield'
sprockets (3.0.3) lib/sprockets/cached_environment.rb:47:in `load'
sprockets (3.0.3) lib/sprockets/bundle.rb:23:in `block in call'
sprockets (3.0.3) lib/sprockets/utils.rb:183:in `dfs'
sprockets (3.0.3) lib/sprockets/bundle.rb:24:in `call'
sprockets (3.0.3) lib/sprockets/processor_utils.rb:75:in `call_processor'
sprockets (3.0.3) lib/sprockets/processor_utils.rb:57:in `block in call_processors'
sprockets (3.0.3) lib/sprockets/processor_utils.rb:56:in `reverse_each'
sprockets (3.0.3) lib/sprockets/processor_utils.rb:56:in `call_processors'
sprockets (3.0.3) lib/sprockets/loader.rb:87:in `load_asset_by_uri'
sprockets (3.0.3) lib/sprockets/loader.rb:45:in `block in load'
sprockets (3.0.3) lib/sprockets/loader.rb:157:in `fetch_asset_from_dependency_cache'
sprockets (3.0.3) lib/sprockets/loader.rb:38:in `load'
sprockets (3.0.3) lib/sprockets/cached_environment.rb:20:in `block in initialize'
sprockets (3.0.3) lib/sprockets/cached_environment.rb:47:in `yield'
sprockets (3.0.3) lib/sprockets/cached_environment.rb:47:in `load'
sprockets (3.0.3) lib/sprockets/base.rb:63:in `find_asset'
sprockets (3.0.3) lib/sprockets/environment.rb:30:in `find_asset'
sprockets (3.0.3) lib/sprockets/base.rb:89:in `[]'
sprockets-rails (2.2.4) lib/sprockets/rails/helper.rb:230:in `lookup_asset_for_path'
sprockets-rails (2.2.4) lib/sprockets/rails/helper.rb:138:in `block in javascript_include_tag'
sprockets-rails (2.2.4) lib/sprockets/rails/helper.rb:136:in `map'
sprockets-rails (2.2.4) lib/sprockets/rails/helper.rb:136:in `javascript_include_tag'
actionview (4.2.1) lib/action_view/template.rb:145:in `block in render'
activesupport (4.2.1) lib/active_support/notifications.rb:166:in `instrument'
actionview (4.2.1) lib/action_view/template.rb:333:in `instrument'
actionview (4.2.1) lib/action_view/template.rb:143:in `render'
actionview (4.2.1) lib/action_view/renderer/template_renderer.rb:66:in `render_with_layout'
actionview (4.2.1) lib/action_view/renderer/template_renderer.rb:52:in `render_template'
actionview (4.2.1) lib/action_view/renderer/template_renderer.rb:14:in `render'
actionview (4.2.1) lib/action_view/renderer/renderer.rb:42:in `render_template'
actionview (4.2.1) lib/action_view/renderer/renderer.rb:23:in `render'
actionview (4.2.1) lib/action_view/rendering.rb:100:in `_render_template'
actionpack (4.2.1) lib/action_controller/metal/streaming.rb:217:in `_render_template'
actionview (4.2.1) lib/action_view/rendering.rb:83:in `render_to_body'
actionpack (4.2.1) lib/action_controller/metal/rendering.rb:32:in `render_to_body'
actionpack (4.2.1) lib/action_controller/metal/renderers.rb:37:in `render_to_body'
actionpack (4.2.1) lib/abstract_controller/rendering.rb:25:in `render'
actionpack (4.2.1) lib/action_controller/metal/rendering.rb:16:in `render'
actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:44:in `block (2 levels) in render'
activesupport (4.2.1) lib/active_support/core_ext/benchmark.rb:12:in `block in ms'
/home/me/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/benchmark.rb:303:in `realtime'
activesupport (4.2.1) lib/active_support/core_ext/benchmark.rb:12:in `ms'
actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:44:in `block in render'
actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:87:in `cleanup_view_runtime'
activerecord (4.2.1) lib/active_record/railties/controller_runtime.rb:25:in `cleanup_view_runtime'
actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:43:in `render'
actionpack (4.2.1) lib/action_controller/metal/implicit_render.rb:10:in `default_render'
actionpack (4.2.1) lib/action_controller/metal/implicit_render.rb:5:in `send_action'
actionpack (4.2.1) lib/abstract_controller/base.rb:198:in `process_action'
actionpack (4.2.1) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (4.2.1) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (4.2.1) lib/active_support/callbacks.rb:117:in `call'
activesupport (4.2.1) lib/active_support/callbacks.rb:117:in `call'
activesupport (4.2.1) lib/active_support/callbacks.rb:555:in `block (2 levels) in compile'
activesupport (4.2.1) lib/active_support/callbacks.rb:505:in `call'
activesupport (4.2.1) lib/active_support/callbacks.rb:505:in `call'
activesupport (4.2.1) lib/active_support/callbacks.rb:498:in `block (2 levels) in around'
activesupport (4.2.1) lib/active_support/callbacks.rb:313:in `call'
activesupport (4.2.1) lib/active_support/callbacks.rb:313:in `block (2 levels) in halting'
route_translator (4.0.0) lib/route_translator/extensions/action_controller.rb:20:in `set_locale_from_url'
activesupport (4.2.1) lib/active_support/callbacks.rb:432:in `block in make_lambda'
activesupport (4.2.1) lib/active_support/callbacks.rb:312:in `call'
activesupport (4.2.1) lib/active_support/callbacks.rb:312:in `block in halting'
activesupport (4.2.1) lib/active_support/callbacks.rb:497:in `call'
activesupport (4.2.1) lib/active_support/callbacks.rb:497:in `block in around'
activesupport (4.2.1) lib/active_support/callbacks.rb:505:in `call'
activesupport (4.2.1) lib/active_support/callbacks.rb:505:in `call'
activesupport (4.2.1) lib/active_support/callbacks.rb:92:in `_run_callbacks'
activesupport (4.2.1) lib/active_support/callbacks.rb:776:in `_run_process_action_callbacks'
activesupport (4.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (4.2.1) lib/abstract_controller/callbacks.rb:19:in `process_action'
actionpack (4.2.1) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
activesupport (4.2.1) lib/active_support/notifications.rb:164:in `block in instrument'
activesupport (4.2.1) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (4.2.1) lib/active_support/notifications.rb:164:in `instrument'
actionpack (4.2.1) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (4.2.1) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
activerecord (4.2.1) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (4.2.1) lib/abstract_controller/base.rb:137:in `process'
actionview (4.2.1) lib/action_view/rendering.rb:30:in `process'
actionpack (4.2.1) lib/action_controller/metal.rb:196:in `dispatch'
actionpack (4.2.1) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
actionpack (4.2.1) lib/action_controller/metal.rb:237:in `block in action'
actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:74:in `call'
actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:74:in `dispatch'
actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:43:in `serve'
actionpack (4.2.1) lib/action_dispatch/journey/router.rb:43:in `block in serve'
actionpack (4.2.1) lib/action_dispatch/journey/router.rb:30:in `each'
actionpack (4.2.1) lib/action_dispatch/journey/router.rb:30:in `serve'
actionpack (4.2.1) lib/action_dispatch/routing/route_set.rb:819:in `call'
omniauth (1.2.2) lib/omniauth/strategy.rb:186:in `call!'
omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call'
omniauth (1.2.2) lib/omniauth/strategy.rb:186:in `call!'
omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call'
omniauth (1.2.2) lib/omniauth/builder.rb:59:in `call'
warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
warden (1.2.3) lib/warden/manager.rb:34:in `catch'
warden (1.2.3) lib/warden/manager.rb:34:in `call'
rack (1.6.0) lib/rack/etag.rb:24:in `call'
rack (1.6.0) lib/rack/conditionalget.rb:25:in `call'
rack (1.6.0) lib/rack/head.rb:13:in `call'
actionpack (4.2.1) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
actionpack (4.2.1) lib/action_dispatch/middleware/flash.rb:260:in `call'
rack (1.6.0) lib/rack/session/abstract/id.rb:225:in `context'
rack (1.6.0) lib/rack/session/abstract/id.rb:220:in `call'
actionpack (4.2.1) lib/action_dispatch/middleware/cookies.rb:560:in `call'
activerecord (4.2.1) lib/active_record/query_cache.rb:36:in `call'
activerecord (4.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:649:in `call'
activerecord (4.2.1) lib/active_record/migration.rb:378:in `call'
actionpack (4.2.1) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
activesupport (4.2.1) lib/active_support/callbacks.rb:88:in `call'
activesupport (4.2.1) lib/active_support/callbacks.rb:88:in `_run_callbacks'
activesupport (4.2.1) lib/active_support/callbacks.rb:776:in `_run_call_callbacks'
activesupport (4.2.1) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (4.2.1) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (4.2.1) lib/action_dispatch/middleware/reloader.rb:73:in `call'
actionpack (4.2.1) lib/action_dispatch/middleware/remote_ip.rb:78:in `call'
better_errors (2.1.1) lib/better_errors/middleware.rb:59:in `call'
web-console (2.0.0.beta4) lib/action_dispatch/debug_exceptions.rb:18:in `middleware_call'
web-console (2.0.0.beta4) lib/action_dispatch/debug_exceptions.rb:13:in `call'
actionpack (4.2.1) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.2.1) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.2.1) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.2.1) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.2.1) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.2.1) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.2.1) lib/rails/rack/logger.rb:20:in `call'
quiet_assets (1.1.0) lib/quiet_assets.rb:27:in `call_with_quiet_assets'
actionpack (4.2.1) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.6.0) lib/rack/methodoverride.rb:22:in `call'
rack (1.6.0) lib/rack/runtime.rb:18:in `call'
activesupport (4.2.1) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
rack (1.6.0) lib/rack/lock.rb:17:in `call'
actionpack (4.2.1) lib/action_dispatch/middleware/static.rb:113:in `call'
rack (1.6.0) lib/rack/sendfile.rb:113:in `call'
railties (4.2.1) lib/rails/engine.rb:518:in `call'
railties (4.2.1) lib/rails/application.rb:164:in `call'
rack (1.6.0) lib/rack/lock.rb:17:in `call'
rack (1.6.0) lib/rack/content_length.rb:15:in `call'
rack (1.6.0) lib/rack/handler/webrick.rb:89:in `service'
/home/me/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service'
/home/me/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run'
/home/me/.rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'

This error occurred while loading the following files:
   coffee_script

Request

Parameters:

None

If I add gem "sprockets", "2.12.3" to the Gemfile it works again.

Does version 3 make some hard assumption on the presence of CoffeeScript?

Copied from original issue: sstephenson/sprockets#724

About this issue

  • Original URL
  • State: closed
  • Created 9 years ago
  • Comments: 36 (17 by maintainers)

Commits related to this issue

Most upvoted comments

It’s the cache. rake tmp:cache:clear.

It’s the cache. rake tmp:cache:clear.

Just an explanation of what I think is happening in case it helps. When you have coffeescript in the pipeline, it may be cached. Once you remove the coffeescript file and the gem, the residual cache stays because sprockets only overrides files that have changed, but doesn’t clean up files from the cache that it doesn’t see. The pipeline will read from the cache. When it sees the coffeescript file, it attempts to render it. And because it’s a coffeescript file, it requires the coffee_script gem, doesn’t find it, kaboom.

@prathamesh-sonpatki that App is failing because you still have a coffee file in path which leads sprockets to try and resolve coffeescript https://github.com/prathamesh-sonpatki/final-demo-app/blob/master/app/assets/javascripts/posts.coffee Works when it is removed.

So the solution for Teaspoon is to remove all .coffee files from asset paths, even though those coffee files are never required or referenced? This is what I’m seeing as I debug the issue.

@marckohlbrugge Do you have require rails-ujs in your “application.js”? rails-ujs is written in CoffeeScript, and might be triggering the error you see.

This was the case for me, in a test dummy app that otherwise had no CoffeeScript. Clearing the cache worked temporarily, but the problem would resurface after testing against different versions of Rails. The only solution was to add gem "coffee-script" to the Gemfile.

Has anyone figured out a reliable way to discover which dependency might cause this issue?

After completely removing coffeescript from my codebase, I get this same error. It’s not a caching issue (cleared everything), so it’s likely one of my Gemfile or Yarn dependencies. Would be great if there was a structured approach to tackling this. Unfortunately the stack trace is not much help. (it just leads to sprockets trying to require coffee_script).

@ordinaryzelig MY BAD, you left coffee-rails in the Gemfile on purpose to show that it works with coffee rails in the Gemfile but does not work if you remove it. I didn’t realize that at first.

Is it possible to detect something that is cached but shouldn’t exist such as in this situation?