From 1b2745e788df56bfe6f05f11512f5fb9dcac1e72 Mon Sep 17 00:00:00 2001 From: maxwell Date: Tue, 29 Jun 2010 11:46:08 -0700 Subject: [PATCH] added socket renderer spec and slight refactor --- config/initializers/socket.rb | 2 +- lib/socket_render.rb | 35 ++++++++++++++++++++++++++++++++ spec/lib/socket_renderer_spec.rb | 23 +++++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 lib/socket_render.rb create mode 100644 spec/lib/socket_renderer_spec.rb diff --git a/config/initializers/socket.rb b/config/initializers/socket.rb index 22086046d..3c716ef05 100644 --- a/config/initializers/socket.rb +++ b/config/initializers/socket.rb @@ -6,9 +6,9 @@ module WebSocket EM.add_timer(0.1) do @channel = EM::Channel.new puts @channel.inspect - include SocketRenderer + SocketRenderer.instantiate_view end EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 8080, :debug =>true) do |ws| diff --git a/lib/socket_render.rb b/lib/socket_render.rb new file mode 100644 index 000000000..0bcc6371c --- /dev/null +++ b/lib/socket_render.rb @@ -0,0 +1,35 @@ +module SocketRenderer + require 'app/helpers/application_helper' + def self.instantiate_view + @view = ActionView::Base.new(ActionController::Base.view_paths, {}) + class << @view + include ApplicationHelper + include Rails.application.routes.url_helpers + include ActionController::RequestForgeryProtection::ClassMethods + def protect_against_forgery? + false + end + end + end + + def self.view_hash(object) + begin + puts "I be working hard" + v = view_for(object) + puts v.inspect + + rescue Exception => e + puts "in failzord " + v.inspect + puts object.inspect + puts e.message + raise e + end + puts "i made it here" + {:class =>object.class.to_s.underscore.pluralize, :html => v} + end + + def self.view_for(object) + @view.render @view.type_partial(object), :post => object + end + +end diff --git a/spec/lib/socket_renderer_spec.rb b/spec/lib/socket_renderer_spec.rb new file mode 100644 index 000000000..19144d852 --- /dev/null +++ b/spec/lib/socket_renderer_spec.rb @@ -0,0 +1,23 @@ +require File.dirname(__FILE__) + '/../spec_helper' + +describe SocketRenderer do + before do + SocketRenderer.instantiate_view + @user = Factory.create(:user, :email => "bob@jones.com") + @user.profile = Factory.build(:profile, :person => @user) + end + + it 'should render a partial for a status message' do + message = Factory.create(:status_message, :person => @user) + html = SocketRenderer.view_for message + html.include? message.message + end + + it 'should prepare a class/view hash' do + message = Factory.create(:status_message, :person => @user) + + hash = SocketRenderer.view_hash(message) + hash[:class].should == "status_messages" + + end +end