@ -4,48 +4,44 @@ gRPC Ruby
A Ruby implementation of gRPC.
Status
-------
------
Alpha : Ready for early adopters
INSTALLATION PREREQUISITES
--------------------------
PREREQUISITES
-------------
This requires Ruby 2.1, as the RPC API surface uses keyword args.
- Ruby 2.x. The gRPC API uses keyword args.
- [homebrew][] on Mac OS X, [linuxbrew][] on Linux. These simplify the installation of the gRPC C core.
QUICK - INSTALL
INSTALLATION
---------------
- Clone this repository.
- Follow the instructions in [INSTALL ](../../INSTALL ) to install the gRPC C core.
- If you don't have Ruby 2.1 installed, switch to the more detailed instructions below
- Use bundler to install
On Mac OS X, install [homebrew][]. On Linux, install [linuxbrew][].
Run the following command to install gRPC Ruby.
```sh
$ # from this directory
$ gem install bundler & & bundle install
$ curl -fsSL https://goo.gl/getgrpc | bash -s ruby
```
This will download and run the [gRPC install script][], then install the latest version of gRPC Ruby gem. It also installs Protocol Buffers compiler (_protoc_) and the gRPC _protoc_ plugin for ruby.
Installing from source
----------------------
BUILD FROM SOURCE
---------------------
- Clone this repository
- Build the gRPC C core
E.g, from the root of the gRPC [git repo ](https://github.com/google/grpc )
E.g, from the root of the gRPC [Git repository ](https://github.com/google/grpc )
```sh
$ cd ../..
$ make & & sudo make install
```
- Install Ruby 2.1 . Consider doing this with [RVM ](http://rvm.io ), it's a nice way of controlling
- Install Ruby 2.x . Consider doing this with [RVM ](http://rvm.io ), it's a nice way of controlling
the exact ruby version that's used.
```sh
$ command curl -sSL https://rvm.io/mpapis.asc | gpg --import -
$ \curl -sSL https://get.rvm.io | bash -s stable --ruby=ruby-2.1
$ \curl -sSL https://get.rvm.io | bash -s stable --ruby=ruby-2
$
$ # follow the instructions to ensure that your're using the latest stable version of Ruby
$ # and that the rvm command is installed
```
- Make sure your run `source $HOME/.rvm/scripts/rvm` as instructed to complete the set up of RVM
- Install [bundler ](http://bundler.io/ )
@ -53,30 +49,36 @@ $ # and that the rvm command is installed
$ gem install bundler
```
- Finally, install the gRPC gem locally.
- Finally, build and install the gRPC gem locally.
```sh
$ # from this directory
$ bundle install # creates the ruby bundle, including building the grpc extension
$ rake # runs the unit tests, see rake -T for other options
```
DOCUMENTATION
-------------
- rubydoc for the gRPC gem is available online at [rubydoc][].
- the gRPC Ruby reference documentation is available online at [grpc.io][]
CONTENTS
--------
Directory structure is the layout for [ruby extensions][]
- ext: the gRPC ruby extension
- lib: the entrypoint gRPC ruby library to be used in a 'require' statement
- spec: Rspec unittests
- bin: example gRPC clients and servers, e.g,
Directory structure is the layout for [ruby extensions ](http://guides.rubygems.org/gems-with-extensions/ )
- ext:
the gRPC ruby extension
- lib:
the entrypoint gRPC ruby library to be used in a 'require' statement
- spec:
Rspec unittest
- bin:
example gRPC clients and servers, e.g,
```ruby
stub = Math::Math::Stub.new('my.test.math.server.com:8080')
req = Math::DivArgs.new(dividend: 7, divisor: 3)
logger.info("div(7/3): req=#{req.inspect}")
GRPC.logger.info("div(7/3): req=#{req.inspect}")
resp = stub.div(req)
logger.info("Answer: #{resp.inspect}")
GRPC.logger.info("Answer: #{resp.inspect}")
```
[homebrew]:http://brew.sh
[linuxbrew]:https://github.com/Homebrew/linuxbrew#installation
[gRPC install script]:https://raw.githubusercontent.com/grpc/homebrew-grpc/master/scripts/install
[ruby extensions]:http://guides.rubygems.org/gems-with-extensions/
[rubydoc]: http://www.rubydoc.info/gems/grpc
[grpc.io]: http://www.grpc.io/docs/installation/ruby.html