1*cc02d7e2SAndroid Build Coastguard Worker[](https://rubygems.org/gems/grpc/) 2*cc02d7e2SAndroid Build Coastguard WorkergRPC Ruby 3*cc02d7e2SAndroid Build Coastguard Worker========= 4*cc02d7e2SAndroid Build Coastguard Worker 5*cc02d7e2SAndroid Build Coastguard WorkerA Ruby implementation of gRPC. 6*cc02d7e2SAndroid Build Coastguard Worker 7*cc02d7e2SAndroid Build Coastguard WorkerPREREQUISITES 8*cc02d7e2SAndroid Build Coastguard Worker------------- 9*cc02d7e2SAndroid Build Coastguard Worker 10*cc02d7e2SAndroid Build Coastguard Worker- Ruby 2.x. The gRPC API uses keyword args. 11*cc02d7e2SAndroid Build Coastguard Worker 12*cc02d7e2SAndroid Build Coastguard WorkerINSTALLATION 13*cc02d7e2SAndroid Build Coastguard Worker--------------- 14*cc02d7e2SAndroid Build Coastguard Worker 15*cc02d7e2SAndroid Build Coastguard Worker**Linux and Mac OS X:** 16*cc02d7e2SAndroid Build Coastguard Worker 17*cc02d7e2SAndroid Build Coastguard Worker```sh 18*cc02d7e2SAndroid Build Coastguard Workergem install grpc 19*cc02d7e2SAndroid Build Coastguard Worker``` 20*cc02d7e2SAndroid Build Coastguard Worker 21*cc02d7e2SAndroid Build Coastguard WorkerIf using a Gemfile and you wish to pull from a git repository or GitHub, make sure to tell bundler to retrieve submodules: 22*cc02d7e2SAndroid Build Coastguard Worker``` 23*cc02d7e2SAndroid Build Coastguard Workergem 'grpc', github: 'grpc/grpc', submodules: true 24*cc02d7e2SAndroid Build Coastguard Worker``` 25*cc02d7e2SAndroid Build Coastguard Worker 26*cc02d7e2SAndroid Build Coastguard WorkerBUILD FROM SOURCE 27*cc02d7e2SAndroid Build Coastguard Worker--------------------- 28*cc02d7e2SAndroid Build Coastguard Worker- Clone this repository 29*cc02d7e2SAndroid Build Coastguard Worker 30*cc02d7e2SAndroid Build Coastguard Worker- Init submodules 31*cc02d7e2SAndroid Build Coastguard Worker 32*cc02d7e2SAndroid Build Coastguard Worker```sh 33*cc02d7e2SAndroid Build Coastguard Workergit submodule update --init 34*cc02d7e2SAndroid Build Coastguard Worker``` 35*cc02d7e2SAndroid Build Coastguard Worker 36*cc02d7e2SAndroid Build Coastguard Worker- Install Ruby 2.x. Consider doing this with [RVM](http://rvm.io), it's a nice way of controlling 37*cc02d7e2SAndroid Build Coastguard Worker the exact ruby version that's used. 38*cc02d7e2SAndroid Build Coastguard Worker```sh 39*cc02d7e2SAndroid Build Coastguard Worker$ command curl -sSL https://rvm.io/mpapis.asc | gpg --import - 40*cc02d7e2SAndroid Build Coastguard Worker$ \curl -sSL https://get.rvm.io | bash -s stable --ruby=ruby-2 41*cc02d7e2SAndroid Build Coastguard Worker$ 42*cc02d7e2SAndroid Build Coastguard Worker$ # follow the instructions to ensure that your're using the latest stable version of Ruby 43*cc02d7e2SAndroid Build Coastguard Worker$ # and that the rvm command is installed 44*cc02d7e2SAndroid Build Coastguard Worker``` 45*cc02d7e2SAndroid Build Coastguard Worker- Make sure your run `source $HOME/.rvm/scripts/rvm` as instructed to complete the set up of RVM 46*cc02d7e2SAndroid Build Coastguard Worker 47*cc02d7e2SAndroid Build Coastguard Worker- Install [bundler](http://bundler.io/) 48*cc02d7e2SAndroid Build Coastguard Worker``` 49*cc02d7e2SAndroid Build Coastguard Worker$ gem install bundler 50*cc02d7e2SAndroid Build Coastguard Worker``` 51*cc02d7e2SAndroid Build Coastguard Worker 52*cc02d7e2SAndroid Build Coastguard Worker- Finally, build and install the gRPC gem locally. 53*cc02d7e2SAndroid Build Coastguard Worker```sh 54*cc02d7e2SAndroid Build Coastguard Worker$ # from this directory 55*cc02d7e2SAndroid Build Coastguard Worker$ bundle install # creates the ruby bundle, including building the grpc extension 56*cc02d7e2SAndroid Build Coastguard Worker$ rake # runs the unit tests, see rake -T for other options 57*cc02d7e2SAndroid Build Coastguard Worker``` 58*cc02d7e2SAndroid Build Coastguard Worker 59*cc02d7e2SAndroid Build Coastguard WorkerDOCUMENTATION 60*cc02d7e2SAndroid Build Coastguard Worker------------- 61*cc02d7e2SAndroid Build Coastguard Worker- rubydoc for the gRPC gem is available online at [rubydoc][]. 62*cc02d7e2SAndroid Build Coastguard Worker- the gRPC Ruby reference documentation is available online at [grpc.io][] 63*cc02d7e2SAndroid Build Coastguard Worker 64*cc02d7e2SAndroid Build Coastguard WorkerCONTENTS 65*cc02d7e2SAndroid Build Coastguard Worker-------- 66*cc02d7e2SAndroid Build Coastguard WorkerDirectory structure is the layout for [ruby extensions][] 67*cc02d7e2SAndroid Build Coastguard Worker- ext: the gRPC ruby extension 68*cc02d7e2SAndroid Build Coastguard Worker- lib: the entrypoint gRPC ruby library to be used in a 'require' statement 69*cc02d7e2SAndroid Build Coastguard Worker- spec: Rspec unittests 70*cc02d7e2SAndroid Build Coastguard Worker- bin: example gRPC clients and servers, e.g, 71*cc02d7e2SAndroid Build Coastguard Worker 72*cc02d7e2SAndroid Build Coastguard Worker ```ruby 73*cc02d7e2SAndroid Build Coastguard Worker stub = Math::Math::Stub.new('my.test.math.server.com:8080', :this_channel_is_insecure) 74*cc02d7e2SAndroid Build Coastguard Worker req = Math::DivArgs.new(dividend: 7, divisor: 3) 75*cc02d7e2SAndroid Build Coastguard Worker GRPC.logger.info("div(7/3): req=#{req.inspect}") 76*cc02d7e2SAndroid Build Coastguard Worker resp = stub.div(req) 77*cc02d7e2SAndroid Build Coastguard Worker GRPC.logger.info("Answer: #{resp.inspect}") 78*cc02d7e2SAndroid Build Coastguard Worker ``` 79*cc02d7e2SAndroid Build Coastguard Worker 80*cc02d7e2SAndroid Build Coastguard Worker[ruby extensions]:http://guides.rubygems.org/gems-with-extensions/ 81*cc02d7e2SAndroid Build Coastguard Worker[rubydoc]: http://www.rubydoc.info/gems/grpc 82*cc02d7e2SAndroid Build Coastguard Worker[grpc.io]: https://grpc.io/docs/languages/ruby/quickstart 83*cc02d7e2SAndroid Build Coastguard Worker[Debian jessie-backports]:http://backports.debian.org/Instructions/ 84