Я нахожусь на Rails 4, используя Resque w/Redis.Использование метода контроллера с параметром Resque Background
Мой вопрос: Как я могу использовать метод контроллера, который в настоящее время определен в моем приложении_controller, внутри моей фоновой работы?
Вот текущий метод, который я определил:
def push_to_google(token, message)
if token.present?
gcm = GCM.new("843jf9384fj839f848j890fj3")
registration_ids = ["#{token}"] # an array of one or more client registration tokens
options = {data: {notification: "#{message}"}}
response = gcm.send(registration_ids, options)
end
end
, который я хотел бы использовать в этом фоне работе, определенной в моих delayed_notifications:
class DelayedNotifications
@queue = :notifications_queue
def self.perform(registration_id, user_name)
push_to_google(registration_id, "New message from #{user_name}.")
end
end
Конечно, мои работы в настоящее время неудачи с этой ошибкой:
undefined method 'push_to_google' for DelayedNotifications:Class
Спасибо за помощь заранее.
Я бы не ставил это в 'ApplicationHelper' но выделенный модуль где-то в 'lib /'. Ваш подход кажется мне довольно опасным, так как он добавляет все методы, определенные в 'ApplicationHelper', как действия контроллера. По этой причине я бы включил метод как закрытый. – BoraMa
Спасибо за ваш комментарий, я думаю, что возьму этот подход. Есть ли какие-либо преимущества в том, чтобы поместить мой модуль в каталог 'lib' и каталог' helpers'? @BoraMa – Kathan
@ Kathan Существует небольшая разница. [Помощники Rails] (http://api.rubyonrails.org/classes/ActionController/Helpers.html) (т.е. модули в каталоге 'app/helpers') предназначены для [перемещения сложной логики из представлений] (http: //mixandgo.com/blog/the-beginner-s-guide-to-rails-helpers), т. е. они обычно имеют дело с представлением данных. Кроме того, по умолчанию все помощники включены в пространство имен представления (они автоматически используются из представлений). Каталог 'lib' используется для любых модулей поддержки вообще. Поскольку ваш код, похоже, не касается презентации, я бы поместил его в 'lib'. – BoraMa