Search code examples
ember.jsrackrake-pipeline

New version of Rake Pipeline doesn't like my config.ru


I'm working on an Ember.js project (around 0.9.8.x, if it matters) which was built with ember-skeleton. I recently made the mistake of haphazardly running bundle update and my version of rake-pipeline jumped from 0.6.0 to 0.8.0, and I get this error when I make a request of my development server:

NoMethodError at /
undefined method `invoke' for "Assetfile":String

The specific error comes here:

~/.rvm/gems/ruby-1.9.3-p125@project/bundler/gems/rake-pipeline-ee992cbcda51/lib/rake-pipeline/middleware.rb: in call, line 32

but I would guess the real start of it is in the first few lines of config.ru:

require 'rake-pipeline'
require 'rake-pipeline/middleware'
use Rake::Pipeline::Middleware, 'Assetfile'

The stack trace doesn't appear to touch my code at all; in fact, if I understand this error properly, it doesn't even touch my Assetfile.

Is this a bug, or did something change in rake-pipeline? Will it be easier to downgrade rake-pipeline (if so, to where?) or is there something I can fix in config.ru?

ETA: I'm hopping back in the rake-pipeline project history a few dozen commits at a time. Going back to the end of October, I get different errors:

TypeError at /
can't convert Fixnum into String

~/.rvm/gems/ruby-1.9.3-p125@project/bundler/gems/rake-pipeline-986129d378a6/lib/rake-pipeline/manifest_entry.rb:9:in `parse'

When I hop all the way back to April 2012 I get a working version. So my project is back in business, but I'd love to know what blew up.


Solution

  • The problem is that rake-pipeline now expects a Rake::Pipeline::Project object as an argument, not a string. Replacing the third line of that config.ru with this makes it work:

    use Rake::Pipeline::Middleware, Rake::Pipeline::Project.new('Assetfile')
    

    Thanks, GitHub!