class FayeRails::RackAdapter

Attributes

endpoint[R]
server[R]

Public Class Methods

new(app=nil, options=nil) click to toggle source
Calls superclass method
# File lib/faye-rails/rack_adapter.rb, line 8
def initialize(app=nil, options=nil)
  super
  FayeRails.servers << self
end

Public Instance Methods

debug_messages() click to toggle source

Adds a very simple extension to the server causing it to log all messages in and out to Rails.logger.debug.

# File lib/faye-rails/rack_adapter.rb, line 54
def debug_messages
  add_extension(DebugMessagesExtension.new)
end
map(opts) click to toggle source

Rudimentary routing support for channels to controllers.

@param opts

a Hash of mappings either string keys (channel globs)
mapping to controller constants eg:

  '/widgets/**' => WidgetsController

or you can set the behaviour for unknown channels:

  :default => :block

:default can be set to :allow, :drop or :block.
if :drop is chosen then messages to unknown channels
will be silently dropped, whereas if you choose
:block then the message will be returned with the
error "Permission denied."
# File lib/faye-rails/rack_adapter.rb, line 30
def map(opts)
  if opts.is_a? Hash
    opts.each do |channel, controller|
      if channel.is_a? String
        if FayeRails::Matcher.match? '/**', channel
          routing_extension.map(channel, controller)
        else
          raise ArgumentError, "Invalid channel: #{channel}"
        end
      elsif channel == :default
        if controller == :block
          routing_extension.block_unknown_channels!
        elsif controller == :drop
          routing_extension.drop_unknown_channels!
        elsif controller == :allow
          routing_extension.allow_unknown_channels!
        end
      end
    end
  end
end

Private Instance Methods

routing_extension() click to toggle source
# File lib/faye-rails/rack_adapter.rb, line 60
def routing_extension
  if @routing_extension
    @routing_extension
  else
    @routing_extension = RoutingExtension.new
    add_extension(@routing_extension)
    @routing_extension
  end
end