4

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?

2 Answers2

5

Your semester task is in a namespace db.

You need therefore to run it with:

rake db:semester
Shadwell
  • 34,314
  • 14
  • 94
  • 99
3

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

Sravan
  • 18,467
  • 3
  • 30
  • 54