2

Teaspoon has broken after update Rails from 4.2.9 to 4.2.10. Nothing else has changed with project.

Here's the failure when test suite hits teaspoon:

Starting the Teaspoon server...
[33337] Puma starting in cluster mode...
[33337] * Version 3.10.0 (ruby 2.3.3-p222), codename: Russell's Teapot
[33337] * Min threads: 5, max threads: 5
[33337] * Environment: test
[33337] * Process workers: 2
[33337] * Preloading application
[33337] * Listening on tcp://127.0.0.1:63120
[33337] Use Ctrl-C to stop
[33337] - Worker 0 (pid: 33351) booted, phase: 0
[33337] - Worker 1 (pid: 33352) booted, phase: 0
Teaspoon running default suite at http://127.0.0.1:63120/teaspoon/default
Error: ActionView::Template::Error: Asset was not declared to be precompiled in production.
Add `Rails.application.config.assets.precompile += %w( support/bind-poly.self.js )` to `config/initializers/assets.rb` and restart your server
/Users/meltemi/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/helper.rb:363:in `raise_unless_precompiled_asset'

Run just Teaspoon with rake teaspoon (as opposed to rake for default suite which default [:teaspoon] is a part) it fails a little differently:

...
Teaspoon running default suite at http://127.0.0.1:63120/teaspoon/default
Failed to load: http://127.0.0.1:63120/teaspoon/default?reporter=Console
rake teaspoon failed
[33352] ! Detected parent died, dying

Here's the line from lib/sprockets/rails/helper.rb that it's tripping over:

def raise_unless_precompiled_asset(path)
  raise Helper::AssetNotPrecompiled.new(path) if @check_precompiled_asset && !precompiled?(path)
end

Not much in the diff between Rails 4.2.9...4.2.10. Hoping one of you smarter people can catch what might be triggering this. Seems like it might be related to asset pipeline or routes to vendored gems...but that's just a guess!?! https://github.com/rails/rails/compare/v4.2.9...v4.2.10

Meltemi
  • 37,979
  • 50
  • 195
  • 293

1 Answers1

1

I've had good luck (so far) with the suggested monkey patch here.

I added this to the bottom of my taspoon_env.rb file:

# https://github.com/modeset/teaspoon/issues/443
module RaiseUnlessPrecompiledFixer
  def raise_unless_precompiled_asset(path)
    super unless path.split('.')[-2] == 'self'
  end
end
Sprockets::Rails::HelperAssetResolvers::Environment.send(:prepend,RaiseUnlessPrecompiledFixer)
James Chevalier
  • 10,604
  • 5
  • 48
  • 74