繁体   English   中英

如何运行 rake 任务?

[英]How to run rake task?

我有一个现有的 .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但我无法看到另一个。

我是导轨的新手。 请帮帮我。

提前致谢。

这就是你想要的......

在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                                 # 
.............

第1步:您是否尝试使用'bundle exec'预先添加命令? 例: ~$ bundle exec rake abcd:abcde:mno

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

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

这是测试代码:

在../lib/tasks/abcde.rake下创建一个文件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

在 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

我花了一段时间才弄清楚这一点。

暂无
暂无

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

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