Как остановить выполнение задачи ruby? - PullRequest
0 голосов
/ 17 апреля 2020

Итак, идея состоит в том, что если какая-либо задача завершается неудачей, слишком много больше не выполняется.

Пример: rails db: drop выдает ошибку, если в базу данных вошли какие-либо пользователи

Пример: import_package выдает ошибку, если у него нет файла .csv или он другой.

это задача разработчика:

require 'csv'

namespace :dev do

  desc "Configuration of the development environment."
  task setup: :environment do
    if Rails.env.development?
      show_spinner("Deleting database...") { %x(rails dev:drop_db) }
      show_spinner("Creating database...") { %x(rails db:create) }
      show_spinner("Running migrates...") { %x(rails db:migrate) }
      show_spinner("Importing Packages...") { %x(rails dev:import_packages) }
      show_spinner("Importing Products...") { %x(rails dev:import_products) }
      show_spinner("Running seeds...") { %x(rails db:seed) }
    else
      puts "You are not in a development environment."
    end
  end

  desc "Import packages from csv file"
  task import_packages: :environment do
    file = "db/packages.csv"

    CSV.foreach(file, :headers => true) do |row|
      Package.create!(row.to_hash)
    end
  end

  desc "Import Products from csv file"
  task import_products: :environment do
    file = "db/products.csv"

    CSV.foreach(file, :headers => true) do |row|
      Product.create!(row.to_hash)
    end
  end

  # Spinner load method
  def show_spinner(start_msg, end_msg = "Finished.")
    spinner = TTY::Spinner.new("[:spinner] #{start_msg}")
    spinner.auto_spin
    yield
    spinner.success("#{end_msg}")
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...