.
├── api ... API Server (Golang)
├── client ... API Client (Rails)
├── proto ... proto files
install protobuf and plugins
brew install protobuf
go get -u -v github.com/golang/protobuf/protoc-gen-go
go get -u -v google.golang.org/grpc
cd grpc_sample
protoc -Iproto --go_out=plugins=grpc:api proto/*.proto
cd api
go run server/server.go
cd client
bundle install
bundle exec grpc_tools_ruby_protoc -I ../proto/ --ruby_out=app/gen/api/pancake/maker --grpc_out=app/gen/api/pancake/maker ../proto/pancake.proto
bundle exec grpc_tools_ruby_protoc -I ../proto/ --ruby_out=app/gen/api/image/uploader --grpc_out=app/gen/api/image/uploader ../proto/image_uploader.proto
bundle exec rails c
# request to bake a pancake
Bakery.bake_pancake(Bakery::Menu::CLASSIC)
# request to send a report
Bakery.report
# upload an image
ImageUploader.chunked_upload('file_path')
brew or build from repository > grpc/command_line_tool.md at master · grpc/grpc · GitHub
brew tap grpc/grpc
brew install grpc
# ls
grpc_cli ls localhost:50051 pancake.maker.PancakeBakerService -l
# call
./grpc_cli call localhost:50051 pancake.maker.PancakeBakerService.Bake 'menu: 1'
./grpc_cli call localhost:50051 pancake.maker.PancakeBakerService.Report ''