如何运行rake任务?

时间:2015-06-11 04:28:19

标签: ruby-on-rails ruby rake

我有一个现有的.rake文件。它先前有一个任务,而且我现在又向现有的rake文件添加了一个任务。

但是当我试图跑步时,它给我一个错误

“耙子流产了! 不知道如何构建任务___“

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

但无法看到其他人。

我是铁杆新手。请帮帮我。

提前致谢。

4 个答案:

答案 0 :(得分:12)

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

在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 :(得分:1)

以下是您的测试代码:

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

答案 2 :(得分:1)

第1步: 您是否尝试使用' bundle exec'? 例如:~$ bundle exec rake abcd:abcde:mno

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

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

答案 3 :(得分: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

我花了一段时间才弄明白。