谁能给我解释一下下面的task :seed在做什么?特别是列出了ensure_review_app、环境等的[]=>%w[]部分?我认识到db:seed是数据库的种子,但被其他人所做的事情搞糊涂了。
task :seed, [] => %w[
ensure_review_app
environment
db:seed
seed:administrator
seed:widgets
] do
Rails.logger.tagged('Seed App') { |l| l.info("Finished seeding new Review App: #{ENV['HEROKU_APP_NAME']}") }
endRake文件:
namespace :review_app do
desc 'Ensure environment is one we shish to spread seed in'
task :ensure_review_app do
abort 'This is not a Heroku Review App' unless review_app?
end
desc 'Seeds a review app with a subset of realistic-looking data'
task :seed, [] => %w[
ensure_review_app
environment
db:seed
seed:administrator
seed:widgets
] do
Rails.logger.tagged('Seed App') { |l| l.info("Finished seeding new Review App: #{ENV['HEROKU_APP_NAME']}") }
end
def review_app?
!!ENV['HEROKU_PARENT_APP_NAME']
end
end如下所示:https://gist.github.com/stevenharman/98576bf49b050b9e59fb26626b7cceff
我认为ensure_review_app可能是一个文件,它是heroku命令吗?
发布于 2019-11-21 02:07:31
这里提到的其他内容是您正在查看的任务的prerequisites。即,它们是应该在运行:seed任务之前运行的其它rake任务。
它们的格式有点奇怪( [] => %w[...] ),因为任务指定任务没有参数。您可以在rake文档的Tasks that Expect Parameters and Have Prerequisites部分中看到这一点。
通常,您会直接看到任务名称中的先决条件,例如:
task seed: %w[ensure_review_app environment db:seed ... ]当您选择使用rake review_app:seed运行该任务时,它将首先运行所有其他先决条件任务,然后运行review_app:seed任务。
您可以在您发布的更长的代码片段中看到ensure_review_app任务。它在做heroku的事情,但和其他任务一样,它只是一个rake任务。
您应该能够使用以下命令列出任何rake任务:
rake -T task_name对于没有描述的任务,您可能需要使用-A
rake -A -T task_namehttps://stackoverflow.com/questions/58960353
复制相似问题