From 87b792445e5e38291fc50b6c3b825a63e9adf130 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 30 Apr 2010 00:47:28 +0000 Subject: add global Unicorn.listener_names method This is useful as a :listeners argument when setting up Raindrops::Middleware (http://raindrops.bogomips.org/), as it can be done automatically. --- lib/unicorn.rb | 7 +++++++ lib/unicorn/socket_helper.rb | 2 ++ test/unit/test_server.rb | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/lib/unicorn.rb b/lib/unicorn.rb index 72cda10..14e0e52 100644 --- a/lib/unicorn.rb +++ b/lib/unicorn.rb @@ -78,6 +78,13 @@ module Unicorn end end end + + # returns an array of strings representing TCP listen socket addresses + # and Unix domain socket paths. This is useful for use with + # Raindrops::Middleware under Linux: http://raindrops.bogomips.org/ + def listener_names + HttpServer::LISTENERS.map { |io| SocketHelper.sock_name(io) } + end end # This is the process manager of Unicorn. This manages worker diff --git a/lib/unicorn/socket_helper.rb b/lib/unicorn/socket_helper.rb index 09085e5..9a4266d 100644 --- a/lib/unicorn/socket_helper.rb +++ b/lib/unicorn/socket_helper.rb @@ -136,6 +136,8 @@ module Unicorn end end + module_function :sock_name + # casts a given Socket to be a TCPServer or UNIXServer def server_cast(sock) begin diff --git a/test/unit/test_server.rb b/test/unit/test_server.rb index 36333a0..41d3e02 100644 --- a/test/unit/test_server.rb +++ b/test/unit/test_server.rb @@ -283,5 +283,9 @@ class WebServerTest < Test::Unit::TestCase } end + def test_listener_names + assert_equal [ "127.0.0.1:#@port" ], Unicorn.listener_names + end + end -- cgit v1.2.3-24-ge0c7