user1670773
user1670773

Reputation:

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?

Upvotes: 4

Views: 18690

Answers (2)

Sravan
Sravan

Reputation: 18657

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 will give your rake taks under db namespace.

rake -T command lists all rake taks available including yours

Upvotes: 3

Shadwell
Shadwell

Reputation: 34784

Your semester task is in a namespace db.

You need therefore to run it with:

rake db:semester

Upvotes: 5

Related Questions