jimsynz / faye-rails

Simple Rails glue for the Faye messaging protocol.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Faye.ensure_reactor_running! in an initializer

nilbus opened this issue · comments

Hi, I noticed your recent change to the README in which you recommended an initializer to run Faye.ensure_reactor_running!. I've actually tried this before with no luck. When I try to start a server in development mode, it just exits during the app startup like so.

$ rails server
=> Booting Thin
=> Rails 4.0.0.beta application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop
Exiting

Have you gotten ensure_reactor_running! working in one of your own apps?

@nilbus did you get this working? If not could you please show us your initialiser?

I never did get it working with ensure_reactor_running!, so I just didn't include that line and started the reactor manually when I needed to use it in the Rails console.

👍 I have the same issue.

I wonder, is this specific to Rails 4?

I'm on Rails 3.2.13

Try adding config.threadsafe! to your development.rb and production.rb environments in /config/environments

No change.

i have same issue

+1

Okay. Here's the horrible way I solved this in MessageRocket:

# config/initializers/faye.rb

def running_as_server?
  Rails.const_defined?(:Server) || defined?(::Rack::Handler::Thin)
end

Rails.application.config.after_initialize do
  unless running_as_server?
    Faye.ensure_reactor_running!
  end
end

@jamesotron I'm not sure if this is the same issue but I'm getting the error eventmachine not initialized: evma_install_oneshot_timer (RuntimeError) when running Cucumber. I've added the initializer you suggested.

Never mind, it's because Cucumber doesn't load initialisers. To get it working I just needed to add Faye.ensure_reactor_running! to a support file, e.g., support/faye.rb.