Thrift Ruby Software Library
    http://incubator.apache.org/thrift/

== LICENSE:

Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.

== DESCRIPTION:

Thrift is a strongly-typed language-agnostic RPC system.
This library is the ruby implementation for both clients and servers.

== INSTALL:

  $ gem install thrift

== CAVEATS:

This library provides the client and server implementations of thrift.
It does <em>not</em> provide the compiler for the .thrift files. To compile
.thrift files into language-specific implementations, please download the full
thrift software package.

== USAGE:

This section should get written by someone with the time and inclination.
In the meantime, look at existing code, such as the benchmark or the tutorial
in the full thrift distribution.
