Задача Rake, что делает `[] =>% w [sure_review_app environment, db: seed]`? - PullRequest
0 голосов
/ 20 ноября 2019

Может кто-нибудь объяснить мне, что делает ниже task :seed? В частности, в разделе []=>%w[], где перечислены sure_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

Файл Rake:

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

Я подумал, что sure_review_app может быть файлом, это команда heroku?

1 Ответ

2 голосов
/ 20 ноября 2019

Другие вещи, упомянутые здесь, являются предпосылками задачи, которую вы смотрите. Т.е. это другие грабли, которые нужно запустить до запуска задачи :seed.

Они имеют слегка странный формат ([] => %w[...]), потому что задача указывает, что аргументов для нее нет. задание. Это можно увидеть в разделе Задачи, которые ожидают параметры и имеют предварительные условия в документации по рейку.

Часто вы можете увидеть предварительные условия сразу после имени задачи, например:

task seed: %w[ensure_review_app environment db:seed ... ]

Когда вы решите запустить эту задачу с rake review_app:seed, она сначала запустит все другие обязательные задачи, а затем запустит задачу review_app:seed.

Вы можете увидеть задачу ensure_review_app вдлинный фрагмент, который вы разместили. Он делает вещи из герою, но это просто задание на рейк, как и любое другое.

Вы можете составить список любых заданий на рейк, используя:

rake -T task_name

Для заданий, которые не имеютописание, которое вам может понадобиться -A:

rake -A -T task_name
...