capistrano 3.0.1 Don't know how to build task 'starting' when using capistrano/rails/assets

asset-pipeline, capistrano, ruby, ruby-on-rails, ruby-on-rails-3

Solution

"Don't know how to build task" errors can be caused by having the 'require' lines in the wrong order in the Capfile.

Problem

When trying to deploy with Capistrano 3.0.1 I get the following error: ``` cap aborted! Don't know how to build task 'starting' /Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.0.1/lib/capistrano/dsl/task_enhancements.rb:5:in `before' /Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-rails-1.1.0/lib/capistrano/tasks/assets.rake:9:in `block in <top (required)>' /Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-rails-1.1.0/lib/capistrano/tasks/assets.rake:8:in `<top (required)>' /Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-rails-1.1.0/lib/capistrano/rails/assets.rb:1:in `load' /Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-rails-1.1.0/lib/capistrano/rails/assets.rb:1:in `<top (required)>' /Users/user/Documents/rails/shop/Capfile:18:in `require' /Users/user/Documents/rails/shop/Capfile:18:in `<top (required)>' /Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.0.1/lib/capistrano/application.rb:22:in `load_rakefile' /Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.0.1/lib/capistrano/application.rb:12:in `run' /Users/user/.rvm/gems/ruby-2.0.0-p353/gems/capistrano-3.0.1/bin/cap:3:in `<top (required)>' /Users/user/.rvm/gems/ruby-2.0.0-p353/bin/cap:23:in `load' /Users/user/.rvm/gems/ruby-2.0.0-p353/bin/cap:23:in `<main>' /Users/user/.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `eval' /Users/user/.rvm/gems/ruby-2.0.0-p353/bin/ruby_executable_hooks:15:in `<main>' (See full trace by running task with --trace) ``` This seems to have started when I uncommented the require rows for loading assets and performing migrations in the Capfile: ``` # Load DSL and Setup Up Stages require 'capistrano/setup' # Includes tasks from other gems included in your Gemfile # # require 'capistrano/rvm' # require 'capistrano/rbenv' # require 'capistrano/chruby' # require 'capistrano/bundler' require 'capistrano/rails/assets' require 'capistrano/rails/migrations' # Loads custom tasks from `lib/capistrano/tasks' if you have any defined. Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r } ``` and adding the gems to the Gemfile: ``` gem 'capistrano', '~> 3.0.0' gem 'capistrano-rails', '~> 1.1.0' ``` It's like the required assets are loaded before the default capistrano tasks so they fail because a the time of loading the `starting` is not yet defined. I'm not sure how to fix this, any idea? thanks

Original source