簡體   English   中英

Rake 任務 `[] => %w[ensure_review_app environment, db:seed ]` 在做什么?

[英]Rake task what is `[] => %w[ensure_review_app environment, db:seed ]` doing?

有人可以向我解釋以下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']}") }
      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[...] ),因為任務指定該任務沒有 arguments 。 您可以在 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM