简体   繁体   中英

Rake aborted! Don't know how to build task

I have a rake task in semester.rake file. It looks like this

namespace :db do
  desc "generate semester data"
  task semester: :environment do
    semester = Semester.create!(name: "SummerSemseter")
    semester = Semester.create!(name: "WinterSemester")
    semester = Semester.create!(name: "Spring Semester")        
  end
end

and I run the task as rake semester . This gives me error

rake aborted!
Don't know how to build task 'semester' (see --tasks)
/home/john/.rvm/gems/ruby-2.2.4/gems/rake-11.3.0/exe/rake:27:in `<top (required)>'
/home/john/.rvm/gems/ruby-2.2.4/bin/ruby_executable_hooks:15:in `eval'
/home/john/.rvm/gems/ruby-2.2.4/bin/ruby_executable_hooks:15:in `<main>'
(See full trace by running task with --trace)

Why I get this error and what would be the solution?

Your semester task is in a namespace db .

You need therefore to run it with:

rake db:semester

Adding to Shadwell's answer your semester is in a namespace db .

so, rake db:semester will work for you

You can know your rake tasks in your namespace using the command

rake -T | grep namespace

Eg:

namespace :my_namespace do
  desc "TODO"
  task :my_task1 => :environment do
  end

  desc "TODO"
  task :my_task2 => :environment do
  end
end

Gives,

$ rake -T | grep my_namespace

rake my_namespace:my_task1  # TODO
rake my_namespace:my_task2  # TODO

So, if you run the command,

rake -T | grep db rake -T | grep db will give your rake taks under db namespace.

rake -T command lists all rake taks available including yours

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM