Search code examples
ruby-on-railsrakeruby-on-rails-5

rails aborted! Don't know how to build task 'task_name'


I was creating a quick one-off task:

require 'yaml'

task generate_permissions_yaml: :environment do
  permissions = []

  Permission.order(:title).each do |permission|
    permissions << {
      title: permission.title,
      code: permission.code,
      description: permission.description
    }
  end

  puts permissions.to_yaml
end

When I ran it with rails generate_permissions_yaml, I got this error:

rails aborted!
Don't know how to build task 'generate_permissions_yaml' (see --tasks)
/bundle/gems/railties-5.0.2/lib/rails/commands/rake_proxy.rb:14:in `block in run_rake_task'
/bundle/gems/railties-5.0.2/lib/rails/commands/rake_proxy.rb:11:in `run_rake_task'
/bundle/gems/railties-5.0.2/lib/rails/commands/commands_tasks.rb:51:in `run_command!'
/bundle/gems/railties-5.0.2/lib/rails/commands.rb:18:in `<top (required)>'

Solution

  • As it turns out, it was due to the way that I named the file. It should have a .rake extension, not .rb.

    I renamed this:

    lib/tasks/generate_permissions_yaml.rb
    

    To this:

    lib/tasks/generate_permissions_yaml.rake
    

    I uncovered this after trying to run rails g task generate_permissions_yaml and seeing that it generated a file with a .rake extension.