簡體   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