draper: rake commands fail if using rails 5

$ rake spec
rake aborted!
LoadError: cannot load such file -- rails/test_unit/sub_test_task
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/gems/draper-2.1.0/lib/draper/tasks/test.rake:7:in `require'
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/gems/draper-2.1.0/lib/draper/tasks/test.rake:7:in `<top (required)>'
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/gems/draper-2.1.0/lib/draper/railtie.rb:67:in `load'
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/gems/draper-2.1.0/lib/draper/railtie.rb:67:in `block (2 levels) in <class:Railtie>'
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/gems/draper-2.1.0/lib/draper/railtie.rb:67:in `each'
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/gems/draper-2.1.0/lib/draper/railtie.rb:67:in `block in <class:Railtie>'
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/bundler/gems/rails-1022796ac075/railties/lib/rails/railtie.rb:237:in `instance_exec'
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/bundler/gems/rails-1022796ac075/railties/lib/rails/railtie.rb:237:in `block in run_tasks_blocks'
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/bundler/gems/rails-1022796ac075/railties/lib/rails/railtie.rb:245:in `each'
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/bundler/gems/rails-1022796ac075/railties/lib/rails/railtie.rb:245:in `each_registered_block'
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/bundler/gems/rails-1022796ac075/railties/lib/rails/railtie.rb:237:in `run_tasks_blocks'
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/bundler/gems/rails-1022796ac075/railties/lib/rails/application.rb:442:in `block in run_tasks_blocks'
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/bundler/gems/rails-1022796ac075/railties/lib/rails/engine/railties.rb:13:in `each'
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/bundler/gems/rails-1022796ac075/railties/lib/rails/engine/railties.rb:13:in `each'
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/bundler/gems/rails-1022796ac075/railties/lib/rails/application.rb:442:in `run_tasks_blocks'
/home/vagrant/.rvm/gems/ruby-2.2.2@rails_5.0/bundler/gems/rails-1022796ac075/railties/lib/rails/engine.rb:460:in `load_tasks'
/home/vagrant/test_app/rakefile:7:in `<top (required)>'
(See full trace by running task with --trace)

About this issue

  • Original URL
  • State: closed
  • Created 9 years ago
  • Reactions: 11
  • Comments: 30 (2 by maintainers)

Commits related to this issue

Most upvoted comments

Instead of using forked version of draper, you can do monkey patch like this:

# lib/rails/test_unit/sub_test_task.rb
class Rails::SubTestTask < Rake::TestTask
end

For Rails 5 use: gem 'draper', "3.0.0.pre1"

Not a fork and not a monkey patch. Seems to be the “best” solution right now.

My team is also receiving this error on various projects when attempting to move to Rails 5. Any progress on getting this fixed (without monkey patching)?

@mayank-istar - Try “gem ‘draper’, github: ‘audionerd/draper’, branch: ‘rails5’”

In test.rake Draper requires rails/test_unit/sub_test_task, but Rails 5 does not have that file in railties/lib/rails/test_unit anymore.

It was removed by 3297909 (see also: 8017e6a).

@asiniy do you mean https://github.com/MrEmelianenko/drape? It’s not developed for the last 5 months, how can anyone be sure it will be maintained in the future?

How come this is tagged as Closed and Merged when it very clearly isn’t?

I’ve just created a new Rails 5 project and get this exact error.

Guys, feel free to switch to the gem 'drape'. It’s a draper designed for rails 5.

Could someone please open a PR?

@ivanjolic95 : Did you try gem ‘draper’, github: ‘audionerd/draper’, branch: ‘rails5’ ?