ruby-on-rails - Rake 任务 `[] => %w[ensure_review_app environment, db:seed ]` 在做什么?
问题描述
有人可以向我解释下面task :seed
在做什么吗?特别[]=>%w[]
是列出 ensure_review_app、环境等的部分?我认识到这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']}") }
end
耙文件:
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 命令吗?
解决方案
这里提到的其他内容是您正在查看的任务的先决条件。即,它们是应该在运行:seed
任务之前运行的其他 rake 任务。
它们的格式有点奇怪 ( [] => %w[...]
),因为任务指定任务没有参数。您可以在 rake 文档的期望参数和具有先决条件的任务部分看到这一点。
通常,您会直接从任务名称中看到先决条件,例如:
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_name
推荐阅读
- python - 如何从数组中生成字典字典?
- php - 如何检查 VARCHAR 列是否包含字符串的子字符串?
- c++ - Unix/Linux 中卷设备的 createFile() 和 DeviceIoControl() 等效项
- kaios - 不知道如何在 KaiOS 中杀死应用程序进程
- javascript - 错误调用 API
- text - 预处理文本,以便检测到没有分隔空格(或连字符分隔)的两个单词
- java - Android在视图组内设置视图位置
- spring - Read multiple properties file in one go using Spring Boot?
- regex - 我正在尝试从文件中提取一行
- r - R-使用存储在服务器上的文件部署闪亮应用程序的问题