| [](https://rubygems.org/gems/grpc/) | |
| gRPC Ruby | |
| ========= | |
| A Ruby implementation of gRPC. | |
| PREREQUISITES | |
| ------------- | |
| - Ruby 2.x. The gRPC API uses keyword args. | |
| INSTALLATION | |
| --------------- | |
| **Linux and Mac OS X:** | |
| ```sh | |
| gem install grpc | |
| ``` | |
| BUILD FROM SOURCE | |
| --------------------- | |
| - Clone this repository | |
| - 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 | |
| $ | |
| $ # 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/) | |
| ``` | |
| $ gem install bundler | |
| ``` | |
| - 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, | |
| ```ruby | |
| stub = Math::Math::Stub.new('my.test.math.server.com:8080', :this_channel_is_insecure) | |
| req = Math::DivArgs.new(dividend: 7, divisor: 3) | |
| GRPC.logger.info("div(7/3): req=#{req.inspect}") | |
| resp = stub.div(req) | |
| GRPC.logger.info("Answer: #{resp.inspect}") | |
| ``` | |
| [ruby extensions]:http://guides.rubygems.org/gems-with-extensions/ | |
| [rubydoc]: http://www.rubydoc.info/gems/grpc | |
| [grpc.io]: http://www.grpc.io/docs/quickstart/ruby.html | |
| [Debian jessie-backports]:http://backports.debian.org/Instructions/ |