[英]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.