Files
ruby/zap.gemspec
zeekay ff0a1c53a3 ci: add build+test workflow; fix macOS native-ext build + modernize dev deps
Adds .github/workflows/ci.yml: ubuntu-latest, ruby/setup-ruby@v1 on Ruby 3.3,
installs the linked C++ runtime (libcapnp, the upstream serialization dep — not
a ZAP brand surface), then `rake compile` + `rake spec`.

Build/test fixes required to get green:
- ext/zap/extconf.rb: on macOS, pin the active SDK via `xcrun --show-sdk-path`.
  Homebrew/rbenv Rubies carry no sysroot in RbConfig and mkmf omits -isysroot,
  so clang could not find <stdio.h>/<iostream> and every probe + the real build
  failed. No-op on Linux/CI and when a sysroot is already set.
- zap.gemspec / Rakefile: rspec ~> 2.14 cannot load on modern Ruby/Rake
  (RakeTask hits the removed Rake#last_comment); bump to rspec ~> 3.13. Bump
  rake-compiler ~> 0.9 -> ~> 1.2 to match.

The native extension links upstream libcapnp; capnp:: C++ calls and capnp/kj
includes are that library's real API and are intentionally retained. No
ZAP-facing identifier references capnp.

Local (Ruby 3.3.11, libcapnp 1.4.0): `bundle exec rake compile` + `rake spec`
green — 5 examples, 0 failures.
2026-06-20 21:32:10 -07:00

37 lines
1.0 KiB
Ruby

require File.expand_path('../lib/zap/version', __FILE__)
Gem::Specification.new do |s|
s.name = 'zap'
s.license = 'MIT'
s.version = Zap::VERSION
s.required_ruby_version = '>= 2.0.0'
s.summary = "ZAP serialization bindings for Ruby."
s.description =
"Ruby bindings for ZAP: an insanely fast binary data interchange " \
"format and capability-based RPC system. Think JSON, except binary. " \
"Or think Protocol Buffers, except faster. " \
"The native extension links the ZAP C++ runtime (currently the " \
"upstream libcapnp build; see README)."
s.homepage = 'https://zap-proto.io'
s.authors = ['ZAP Protocol']
s.email = ['[email protected]']
s.add_development_dependency 'rspec', '~> 3.13'
s.add_development_dependency 'rake', '~> 13.0'
s.add_development_dependency 'rake-compiler', '~> 1.2'
s.add_development_dependency 'awesome_print'
s.add_development_dependency 'interactive_editor'
s.extensions = ['ext/zap/extconf.rb']
s.require_paths = ['lib']
s.files = `git ls-files`.split("\n")
end