我有一个现有的.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
但无法看到其他人。
我是铁杆新手。请帮帮我。
提前致谢。
答案 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.rakenamespace :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
我花了一段时间才弄明白。