Предположим, у меня есть приложение Rails 4, которое отслеживает счетчики использования в части оборудования, поэтому у моего контроллера есть метод record_usage, который можно интерактивно вызывать из представления, чтобы немедленно получить и записать счетчик использования. Но я также хочу, чтобы запустить один и тот же метод периодически, так что я извлечение кода в автономном .rb файл и запустить его периодически через хроны сВозможно ли запустить Rails-контроллер с помощью runner?
rails r -e production record_usage.rb
Моего вопросом: в интересах «СУХОЙ» могу ли я вызвать метод контроллера непосредственно из «record_usage.rb», вместо того, чтобы поддерживать отдельную копию кода record_usage в файле .rb?
Похоже на нарушение «Единой ответственности» ... По какой-либо причине вы не можете извлечь этот метод в отдельный помощник/библиотеку/модель и использовать его оттуда? Вы не можете легко сделать это, не сталкиваясь с возможными проблемами, связанными с предположениями запроса (в зависимости от того, какие предположения фактически делает ваш контроллер). – PinnyM
Возможно, вы захотите использовать что-то вроде [sidekiq] (https://github.com/mperham/sidekiq) или [delayed_job] (https://github.com/collectiveidea/delayed_job). Кроме того, вы можете обернуть свой код в классе; модель (без ActiveRecord) должна быть хорошей. – rdupz