temiola ba22e87c68 Adds ruby versions of the interop server and client 11 лет назад
..
bin ba22e87c68 Adds ruby versions of the interop server and client 11 лет назад
ext 0c475f0ad7 Updating moe_db.txt with the latest equivalence since the ruby import changed the exported structure. 11 лет назад
lib ba22e87c68 Adds ruby versions of the interop server and client 11 лет назад
spec 0c475f0ad7 Updating moe_db.txt with the latest equivalence since the ruby import changed the exported structure. 11 лет назад
.gitignore 097ef9b7d9 Incorporating ruby into the master grpc repository. 11 лет назад
.rspec 097ef9b7d9 Incorporating ruby into the master grpc repository. 11 лет назад
Gemfile 097ef9b7d9 Incorporating ruby into the master grpc repository. 11 лет назад
README.md 0c475f0ad7 Updating moe_db.txt with the latest equivalence since the ruby import changed the exported structure. 11 лет назад
Rakefile 0c475f0ad7 Updating moe_db.txt with the latest equivalence since the ruby import changed the exported structure. 11 лет назад
grpc.gemspec ba22e87c68 Adds ruby versions of the interop server and client 11 лет назад

README.md

Ruby for GRPC

LAYOUT

Directory structure is the recommended layout for ruby extensions

  • ext: the extension code
  • lib: the entrypoint grpc ruby library to be used in a 'require' statement
  • test: tests

DEPENDENCIES

  • Extension

The extension can be built and tested using rake. However, the rake-extensiontask rule is not supported on older versions of rubygems, and the necessary version of rubygems is not available on the latest version of Goobuntu.

This is resolved by using RVM instead; install a single-user ruby environment, and develop on the latest stable version of ruby (2.1.2).

  • Proto code generation

To build generate service stubs and skeletons, it's currently necessary to use a patched version of a beefcake, a simple third-party proto2 library. This is feature compatible with proto3 and will be replaced by official proto3 support in protoc.

  • Patched protoc

The patched version of beefcake in turn depends on a patched version of protoc. This is an update of the latest open source release of protoc with some forward looking proto3 patches.

INSTALLATION PREREQUISITES

Install the patched protoc

$ cd $ git clone sso://team/one-platform-grpc-team/protobuf $ cd protobuf $ ./configure --prefix=/usr $ make $ sudo make install

Install an update to OpenSSL with ALPN support

$ wget https://www.openssl.org/source/openssl-1.0.2-beta3.tar.gz $ tar -zxvf openssl-1.0.2-beta3.tar.gz $ cd openssl-1.0.2-beta3 $ ./config shared $ make $ sudo make install

Install RVM

$ # the -with-openssl-dir ensures that ruby uses the updated version of SSL $ command curl -sSL https://rvm.io/mpapis.asc | gpg --import - $ \curl -sSL https://get.rvm.io | bash -s stable --ruby $ $ # follow the instructions to ensure that your're using the latest stable version of Ruby $ # and that the rvm command is installed $ $ rvm reinstall 2.1.5 --with-openssl-dir=/usr/local/ssl $ gem install bundler # install bundler, the standard ruby package manager

Install the patched beefcake, and update the Gemfile to reference

$ cd $ git clone sso://team/one-platform-grpc-team/grpc-ruby-beefcake beefcake $ cd beefcake $ bundle install $

HACKING

The extension can be built and tested using the Rakefile.

$ # create a workspace $ git5 start net/grpc $ $ # build the C library and install it in $HOME/grpc_dev $ /net/grpc/c/build_gyp/build_grpc_dev.sh $ $ # build the ruby extension and test it. $ cd google3_dir/net/grpc/ruby $ rake

Finally, install grpc ruby locally.

$ cd $ $ # update the Gemfile, modify the line beginning # gem 'beefcake' to refer to $ # the patched beefcake dir $ $ bundle install