|
|
11 лет назад | |
|---|---|---|
| .. | ||
| bin | 11 лет назад | |
| ext | 11 лет назад | |
| lib | 11 лет назад | |
| spec | 11 лет назад | |
| .gitignore | 11 лет назад | |
| .rspec | 11 лет назад | |
| Gemfile | 11 лет назад | |
| README.md | 11 лет назад | |
| Rakefile | 11 лет назад | |
| grpc.gemspec | 11 лет назад | |
Directory structure is the recommended layout for ruby extensions
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).
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.
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.
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 $
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