Вызов моделей из файлов конфигурации - PullRequest
0 голосов
/ 24 ноября 2011

Я пишу планировщик ruby, а именно rufus-scheduler, и есть команды, которые мне нужно написать в разделе инициализаторов внутри папки config, чтобы выполнять задачу каждые 1 минуту или около того. Я пытаюсь получить доступ к методу из модуля в этом. Так что мой код будет выглядеть как

scheduler.every("1m") do
  puts("HELLO #{Time.now}")
  ModelName.methodname("WHAT ARE YOU DOING")
end

Это как-то не выполняет необходимую операцию в модели. Также я не уверен, что это правильный путь - например, вызвать модель внутри файла конфигурации. Есть ли лучшее место, чтобы поместить этот код в модель? Или вызов модели в конфигурационных файлах - это очень хорошая практика. Я посмотрел в Интернете, чтобы увидеть использование различных типов файлов в рубине, но не смог найти подходящий материал. Любая помощь или руководство приветствуется.

Ответы [ 2 ]

2 голосов
/ 24 ноября 2011

Если вы хотите получить доступ к моделям из автономных задач, лучше всего использовать оболочку rails runner. Например, вы бы назвали свой скрипт как:

rails runner call_model.rb

Это загружает в среду Rails, а затем выполняет ваш скрипт, избавляя от необходимости делать это самостоятельно. Модели сами по себе не будут работать, поскольку в них отсутствует контекст Rails.

Если этого недостаточно, вам может потребоваться загрузить среду Rails более напрямую, включив config/environment.rb в конфигурацию вашего rufus-планировщика.

1 голос
/ 24 ноября 2011

Похоже, вы действительно хотите какое-то реальное запланированное действие.Конфигурационные файлы предназначены для конфигурации, а не для действующего рабочего кода такого рода.

Существует тонны способов запуска запланированных задач в rails.

google "rails daemons"или "запланированные задачи по рельсам", чтобы начать вас.

Вот хороший список лучших практик по запланированным задачам с использованием cron: Работа cron для рельсов: лучшие практики?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...