耙子中止!不知道如何构建任务

Rake aborted! Don't know how to build task

我在 semester.rake 文件中有一个 rake 任务。看起来像这样

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

我 运行 的任务是 rake semester。这给了我错误

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)

为什么会出现此错误,解决方案是什么?

您的 semester 任务在命名空间 db 中。

因此您需要运行它:

rake db:semester

添加到 Shadwell 的回答中,您的 semester 在命名空间 db.

所以,rake db:semester 对你有用

您可以使用命令

知道您的命名空间中的 rake 任务

rake -T | grep namespace

例如:

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

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

给予,

$ rake -T | grep my_namespace

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

因此,如果您 运行 命令,

rake -T | grep db 将在 db 命名空间下为您提供佣金。

rake -T 命令列出所有可用的抽成,包括你的