Reputation:
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
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
Reputation: 34784
Your semester
task is in a namespace db
.
You need therefore to run it with:
rake db:semester
Upvotes: 5