繁体   English   中英

如何在Rake中调用另一个任务

[英]How do I call another task in Rake

虽然这听起来与您在这里找到的其他问题类似,但有一点点扭曲。 我有两个目录,比如/ home / rails / Rake和/ home / rails / test_app。 rails目录是我放置所有rails项目的地方。

在Rake中,我有一个Rakefile和一个create.rake文件。

这就是我的rakefile看起来像

namespace :setup do 
    desc "something"
    task :init do
        print "Name of the destination directory: "
        name = STDIN.gets.strip
        cp_r '.', "../#{name}/lib/tasks"
        cd  "../#{name}"
        sh "rake setup:create"

    end
end

创建.rake

namespace :setup do 
    desc "Install"
    task :create do
        sh 'git init'
        #some other code
    end
end

它的作用是显而易见的。 我想将Rake目录的内容复制到/ test_app / lib / tasks。 然后将目录更改为test_app并运行setup:在install.rake文件中定义的create task,该文件现在放在test_app / lib / tasks中。 这有效,但这是这样做的耙方式吗? 任何人都可以给我一点点暗示它是如何完成的,Rake方式。

这是我使用invoke方法时得到的错误:

$ rake setup:init
Name of the destination directory: 
testapp
cp -r . ../testapp/lib/tasks
cd ../testapp
rake aborted!
Don't know how to build task 'setup:create'
/home/TradeRaider/rails/Rake/Rakefile:8:in `block (2 levels) in <top (required)>'
/home/TradeRaider/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `eval'
/home/TradeRaider/.rvm/gems/ruby-2.0.0-p247/bin/ruby_noexec_wrapper:14:in `<main>'
Tasks: TOP => setup:init
(See full trace by running task with --trace)

这是更rake-ish :)

 Rake::Task["setup:create"].invoke

尽管@apneadiving的答案有所帮助,但从字面上讲,我试图从另一个Rakefile调用Rakefile只是让我感到震惊。 无论如何,要做到这一点,我必须先加载rake文件,

load "../#{name}/lib/tasks/create.rake"

(要求它也会做的伎俩)

然后调用它。

Rake::Task["setup:create"].invoke

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM