0.01
No commit activity in last 3 years
No release in over 3 years
Render views to Pusher from anywhere in your application
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 0
>= 3.1
 Project Readme

ActionPusher

Render views to Pusher from anywhere in your application

Pusher users often want to transmit JSON or HTML to the browser upon model events, but models have no business generating either. ActionPusher allows you to render data to Pusher using your existing view templates from an observer or model.

Requirements

Installation

gem 'action_pusher', :require => false

Create an initializer at config/initializers/action_pusher.rb such as:

require 'action_pusher'
ActionPusher::Base.view_paths = File.join( Rails.root, 'app/api' )

Ensure that view_paths points to the location where your templates are actually stored. The default is app/views.

Create a directory at app/pushers to store your ActionPusher "controllers".

Example

app/pushers/notification_pusher.rb:

class NotificationPusher < ActionPusher::Base
  def initialize(notification)
    @notification = notification
    event = @notification.event
    channel = @notification.notification_channel.name
    Pushable.push(channel, event, render(template: 'notifications/show'))
  end

  def controller_path; 'notifications'; end
end

Now when I call NotificationPusher.new( notification ) from my model callbacks, observers, what-have-you... my Notification model object is transmitted to Pusher as pretty JSON output from jbuilder!

Credit

This gem was inspired by stephan.com's solution to a question on StackOverflow, I just wrapped it up in a gem once I got it working well in production.