耙子流产!不知道如何建立任务

时间:2016-10-25 09:46:13

标签: ruby-on-rails rake rake-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)

为什么我会收到此错误以及解决方案是什么?

2 个答案:

答案 0 :(得分:5)

您的semester任务位于名称空间db

因此,您需要运行:

rake db:semester

答案 1 :(得分:3)

根据Shadwell的回答,您的semester位于名称空间db中。

所以, rake db:semester 会对你有用

您可以使用命令

了解命名空间中的佣金任务

<强> 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命令列出了所有可用的佣金,包括您的佣金