m2r

A Mongrel2 backend handler written in Ruby. Also includes Rack adpater to get you up and running quickly.

Build Status Dependency Status

Installation

You'll need following prerequisites first:

Next, in your Gemfile add:

gem 'm2r'

And finally run:

bundle install

Guides

Running Rack Application

Gemfile

Add m2r to Gemfile and run bundle install

Mongrel 2

Configure Handler for your application:

rack_example = Handler(
  send_spec  = "tcp://127.0.0.1:9997",
  send_ident = "14fff75f-3474-4089-af6d-bbd67735ab89",
  recv_spec  = "tcp://127.0.0.1:9996",
  recv_ident = ""
)

Start

[bundle exec] rackup -s mongrel2 application.ru

Add -O option_name to provide options for m2r handler:

[bundle exec] rackup -s mongrel2 another.ru -O recv_addr=tcp://127.0.0.1:9995 -O send_addr=tcp://127.0.0.1:9994

Options

  • recv_addr - This is the send_spec option from Handler configuration in mongrel2.conf. Default: tcp://127.0.0.1:9997
  • send_addr - This is the recv_spec option from Handler configuration in your mongrel2.conf. Default: tcp://127.0.0.1:9996

Processing HTTPS requests from Mongrel2 1.7

Set HTTPS env to true.

HTTPS=true [bundle exec] rackup -s mongrel2 application.ru

For Mongrel2 1.8 and newer this is not necessary.

Developing custom bare Handler

TBD

Versioning

Starting from version 0.1.0 this gem follows semantic versioning policy.

Usage/Examples

  • examples/http_0mq.rb is a test little servlet thing (based on what comes with mongrel2)
  • examples/lobster.ru is a rackup file using the Rack handler that'll serve Rack's funny little lobster app

Contributing

In the spirit of free software, everyone is encouraged to help improve this project.

Here are some ways you can contribute:

  • by using alpha, beta, and prerelease versions
  • by reporting bugs
  • by suggesting new features
  • by writing or editing documentation
  • by writing tests
  • by writing code (no patch is too small: fix typos, add comments, clean up inconsistent whitespace)
  • by refactoring code
  • by closing issues
  • by reviewing patches

Read Contributing page before sending Pull Request :)

Submitting an Issue

We use the GitHub issue tracker to track bugs and features. Before submitting a bug report or feature request, check to make sure it hasn't already been submitted. When submitting a bug report, please include a Gist that includes a stack trace and any details that may be necessary to reproduce the bug, including your gem version, Ruby version, and operating system. Ideally, a bug report should include a pull request with failing tests.

Submitting a Pull Request

  1. Read Contributing page
  2. Fork the repository.
  3. Create a topic branch.
  4. Add tests for your unimplemented feature or bug fix.
  5. Run bundle exec rake. If your test pass, return to step 3.
  6. Implement your feature or bug fix.
  7. Run bundle exec rake. If your tests fail, return to step 5.
  8. Add, commit, and push your changes.
  9. Submit a pull request.

Supported Ruby Versions

This library aims to support and is tested against the following Ruby implementations:

  • Ruby 1.9.2
  • Ruby 1.9.3
  • JRuby
  • Rubinius

Mongrel2 is a registered trademark of Zed A. Shaw who wrote it. And it is awesome.