Skip to content

Serialize Ruby objects to Protocol Buffers

License

Notifications You must be signed in to change notification settings

wantedly/pb-serializer

Repository files navigation

Pb::Serializer

CI codecov Gem Version License

Pb::Serializer is Protocol Buffers serializer for Ruby objects.

日本語版 README

Features

Usage

The following is an example of a message definition and ActiveRecord model for Protocol Buffers.

syntax = "proto3";

package example;

option ruby_package = "ExamplesPb";

message User {
  uint64 id = 1;
  string name = 2;
}
# Schema: [id(integer), name(string)]
class User < ActiveRecord::Base
end

Implements a PbSerializer for the User message defined in .proto. You need to declare the generated class and all defined fields in the PbSerializer.

class UserPbSerializer < Pb::Serializer::Base
  message ExamplesPb::User

  attribute :id
  attribute :name
end

You can serialize Ruby objects to protobuf message object with the implemented PbSerializer.

user = User.find(123)
UserPbSerializer.new(user).to_pb
# => <ExamplesPb::User: id: 123, name: "someuser">

The value of each attribute is determined from the PbSerializer instance or the object passed to the constructor.

Next read

Installation

Add this line to your application's Gemfile:

gem 'pb-serializer'

And then execute:

$ bundle

Or install it yourself as:

$ gem install pb-serializer

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/izumin5210/pb-serializer. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the Pb::Serializer project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.