如何运行rake任务?

9
我有一个现成的.rake文件。它原来只有一个任务,我在已有的rake文件中增加了一个新任务。
但当我尝试运行时,就会出现错误:
rake aborted!
Don't know how to build task ___ 

abc.rake 文件:

namespace abcd
  namespace abcde
    task pqr do
      ------------------
    end

    task mno do ( new task which I added)
     ---------------------
    end
  end
end

但是当我使用命令:rake abcd:abcde:mno时,它显示了上述错误。

所以我使用了rake -T -A,我能够看到rake任务abcd:abcde:pqr,但是我无法看到另一个任务。

我是Rails的新手,请帮助我解决。

提前致谢。


如果你的rake任务有误,它将无法被找到。确保你的rake任务是正确的。首先删除task mno的主体内容,或者只在其中放置一个简单的puts,然后运行rake -T。看看它是否出现了。 - rkamun1
我尝试过了,但没用。还是缺少mno任务。请告诉我如何导入rake任务? - vikas vellanki
您需要重新启动Spring服务器吗? - rkamun1
我重新启动了服务器。但是仍然出现相同的错误。 - vikas vellanki
请参考此文档 - Prashant4224
4个回答

17

以下是您需要的内容......

在lib/tasks文件夹内创建abcd.rake文件。

在abcd.rake文件中编写以下代码:

namespace :abcd do
  namespace :abcde do

     task :pqr do
       puts 'Inside PQR'
     end

     task :new_added_task do
       puts 'Inside New Added Task'
     end

     task :mno => [:new_added_task]  do
       puts 'Inside Mno'
     end

   end
end

现在尝试执行以下命令...
rake abcd:abcde:pqr           #  Output => Inside PQR 

rake abcd:abcde:mno           #  Output => Inside New Added Task
                              #            Inside Mno

rake abcd:abcde:new_added_task  # Output => Inside New Added Task

要查看所有任务,请运行以下命令

rake -T -A 

它将展示所有的任务以及您自己创建的任务...
rake abcd:abcde:mno                                 # 
rake abcd:abcde:new_added_task                      # 
rake abcd:abcde:pqr                                 # 
.............

2

步骤1: 您是否尝试在命令前加上'bundle exec'? 例如:~$ bundle exec rake abcd:abcde:mno

如果您的gem文件中有多个版本,通常需要使用bundle exec运行命令,以便使用当前项目目录中的gems。

(可选)步骤2: 如果步骤1失败,请尝试像这样指定环境 例如:~$ bundle exec rake abcd:abcde:mno RAILS_ENV=development


1

这里是给你的测试代码:

在../lib/tasks/目录下创建一个名为abcde.rake的文件。

namespace :abcde do
  desc 'pqr pqr pqr pqr'
  task :pqr => :environment do
    puts 'pqr'
  end
  desc 'mno mno mno mno'
  task :mno => :environment do
     puts 'mno'
  end
end

然后运行此命令。
rake -T

上述命令的输出为:
rake abcde:mno                                   # mno mno mno mno
rake abcde:pqr                                   # pqr pqr pqr pqr

运行

rake abcde:mno #mno

嗨..我按照精确的流程操作了。但是命令的输出没有显示rake abcde:mno。谢谢回复。 - vikas vellanki
请在您的项目中尝试使用此代码,有时我们会忽略一些小问题。在回答您之前,我已经在我的项目中创建并运行了它。 - Raza Hussain

1
在Rails 6.x中,您需要使用rails而不是rake。上面的user400617的示例。
namespace :abcd do
  namespace :abcde do

     task :pqr do
       puts 'Inside PQR'
     end

     task :new_added_task do
       puts 'Inside New Added Task'
     end

     task :mno => [:new_added_task]  do
       puts 'Inside Mno'
     end

   end
end

会像这样运行
rails abcd:abcde:pqr           #  Output => Inside PQR 

rails abcd:abcde:mno           #  Output => Inside New Added Task
                              #            Inside Mno

rails abcd:abcde:new_added_task  # Output => Inside New Added Task

需要一些时间才能理解这个。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接