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