grpc/src/ruby
Adam Cozzette 016ed921ce
[deps] Upgrade protobuf version to v25.0 (#34513)
This commit upgrades gRPC to protobuf v25.0 and makes some fixes to
account for upb changes. One major change is that upb has been merged
into the protobuf repo, so we can now drop the separate `@upb`
dependency. Another is that `.upb.c` files no longer exist and there are
new `.upb_minitable.h` and `.upb_minitable.c` files. The longer
filenames exceeded a Windows restriction, so to work around that I
renamed the `upb-generated` directory to just `upb-gen`, and likewise
for `upbdefs-generated`.
2023-11-10 00:11:09 -08:00
..
bin [deps] Upgrade protobuf version to v25.0 (#34513) 2023-11-10 00:11:09 -08:00
end2end [ruby] remove unnecessary background thread startup wait logic that interferes with forking (#33805) 2023-07-24 15:17:54 -07:00
ext/grpc [tls] Fix ownership bugs in TlsCredentialsOptions and grpc_tls_credentials_options. (#34758) 2023-10-27 08:09:04 -07:00
lib [Release] Bump master version to 1.60 (gjallarhorn) (#34488) 2023-09-26 13:10:20 -07:00
nativedebug [ruby] create debug symbol packages (#34632) 2023-10-17 10:45:08 -07:00
pb [deps] Upgrade protobuf version to v25.0 (#34513) 2023-11-10 00:11:09 -08:00
qps [deps] Upgrade protobuf version to v25.0 (#34513) 2023-11-10 00:11:09 -08:00
spec [ruby] improve handling for recv_message op failures (#34016) 2023-08-10 12:25:29 -07:00
stress auto-fix most of licenses 2017-06-08 11:22:41 +02:00
tools [Release] Bump master version to 1.60 (gjallarhorn) (#34488) 2023-09-26 13:10:20 -07:00
.gitignore Incorporating ruby into the master grpc repository. 2014-12-01 17:45:43 -08:00
.rubocop.yml add end2end tests to formatter and adjust to formatter 2017-03-20 00:07:25 -07:00
.rubocop_todo.yml Update default ruby version to 3.2 on linux/macos ruby builds (#32010) 2023-01-03 13:38:15 -08:00
CHANGELOG.md Corrects the Changelog date 2015-04-14 11:03:37 -07:00
README.md Update Ruby documentation for Gemfile usage (#25705) 2021-04-19 14:31:26 -07:00

README.md

Gem gRPC Ruby

A Ruby implementation of gRPC.

PREREQUISITES

  • Ruby 2.x. The gRPC API uses keyword args.

INSTALLATION

Linux and Mac OS X:

gem install grpc

If using a Gemfile and you wish to pull from a git repository or GitHub, make sure to tell bundler to retrieve submodules:

gem 'grpc', github: 'grpc/grpc', submodules: true

BUILD FROM SOURCE

  • Clone this repository

  • Init submodules

git submodule update --init
  • Install Ruby 2.x. Consider doing this with RVM, it's a nice way of controlling the exact ruby version that's used.
$ 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

$ gem install bundler
  • Finally, build and install the gRPC gem locally.
$ # 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,

    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}")