module Ansible::Transmit
Public Class Methods
extended(base)
click to toggle source
# File lib/ansible/transmit.rb, line 3 def self.extended(base) base.class_eval { include ActionController::Live } end
Public Instance Methods
build_route(beacon_name)
click to toggle source
# File lib/ansible/transmit.rb, line 18 def build_route(beacon_name) controller_name = self.to_s.underscore.gsub('_controller', '') Rails.application.routes.draw do Rails.application.routes.routes.named_routes.each do |path, route| get path, route.defaults end get "/#{controller_name}/#{beacon_name}" => "#{controller_name}##{beacon_name}" end end
transmit(name)
click to toggle source
# File lib/ansible/transmit.rb, line 7 def transmit(name) beacon_name = :"#{name}_ansible_beacon" build_route beacon_name model = ConstantResolver.new(name).lookup_constant model.extend TransmitModalHelper define_method beacon_name, beacon_action name end
Private Instance Methods
beacon_action()
click to toggle source
# File lib/ansible/transmit.rb, line 30 def beacon_action Proc.new do begin beacon = __method__ model = ConstantResolver.new(beacon.to_s.split("_").first).lookup_constant headers['Content-Type'] = 'text/event-stream' sse = SSE.new(response.stream) model.on_new_message do |event, message| sse.write event, message end ensure sse.close end end end