первый из них, выполняющий задачу рейка дважды, то есть rake db:migrate
не будет дублировать и не перезаписывать столбцы базы данных, если они уже существуют.
Например, capistrano, используемый для развертывания вашего приложения rails в основном в любом месте, будет выполнять повторные задачи, такие как db:migrate
или assets:precompile
при каждом развертывании приложения. Так что не нужно беспокоиться об этом.
Для автоматического запуска задач вам понадобится что-то вроде задания cron. Whenever - отличный рубиновый камень, который позволяет вам установить такую работу с любимым синтаксисом Ruby.
После установки и запуска жемчужины wheneverize .
в корневом каталоге вашего приложения рельсов, вы можете редактировать scheduler.rb и добавить что-то вроде:
every :sunday, :at => '12pm' do
rake my:awesome:task
end
страница Github, а также по умолчанию scheduler.rb
держать много полезных примеры того, как эти рабочие места построены.
с whenever --update-crontab
вы можете написать свои рубиновые кроны в кронтаб, который будет периодически запускать ваши задачи в то время, когда вы захотите их.
** редактировать
несколько задач в одном:
task :setup => [:a, :b, :c]
task :a do
%x(bash command)
end
task :b do
rake db:migrate
end
task :c do
rake whatever
end
'грабли БД: migrate' проверяет таблицу базы данных, которая хранит метки времени последней миграции перспективы. Вам, вероятно, придется реализовать что-то подобное. – ptd
Да, мне нужно что-то вроде db: migrate, но мои задачи rake не ограничиваются только базой данных, поэтому я не могу просто проверить базу данных для отношения – sonnyhe2002
нет, я имею в виду, что рельсы создают специальную таблицу базы данных для хранения этой информации и проверок это когда он запускает эту команду. Я предлагаю вам создать таблицу для этой цели и сохранить задачи, которые вы там запустили. – ptd