从父任务调用简单的rake任务

时间:2017-01-25 14:02:05

标签: ruby-on-rails ruby rake rake-task

我想创建一个非常简单的rake任务。从一个主要任务我想调用所有子任务。我试过这段代码:

namespace :my_namespace do

  task create_all_users: :environment do
    puts "Creating all users"

    create_admin
    create_user

  end

  task create_admin: :environment do
    puts "Creating admin user"
    ######
  end

  task create_user: :environment do
    puts "Creating user"
    ######
  end

end

但我得到错误:

NameError: undefined local variable or method `create_admin' for main:Object

调用任务的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

将默认任务放在命名空间之外,如here所述。或使用@ tthomas7 referred answer

建议的实际方法

使用选项1 ,您的代码将如下所示:

namespace :my_namespace do

  task create_admin: :environment do
    puts "Creating admin user"
    ######
  end

  task create_user: :environment do
    puts "Creating user"
    ######
  end

end

task create_all_users: :environment do
  puts "Creating all users"

  Rake::Task["my_namespace:create_admin"].invoke
  Rake::Task["my_namespace:create_user"].invoke

end