xref: /aosp_15_r20/external/grpc-grpc/src/ruby/README.md (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Worker[![Gem](https://img.shields.io/gem/v/grpc.svg)](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