Context:
Infisical/infisical#6387 — the old infisical-sdk gem is deprecated (legacy cross-language architecture), and this repo was created for a new native Ruby SDK. I committed to building it;
here's the v1 scope I'm planning, modeled on the other native SDKs (node-sdk-v2, go-sdk, java-sdk) for consistency.
Posting here before opening the PR so concerns can get raised early.
In scope for v1:
- Gem skeleton (standard bundle gem layout, zero runtime dependencies — stdlib Net::HTTP + json, matching how lean the other SDKs keep their deps)
- HTTP client with bearer token auth, JSON (de)serialization, exponential backoff + jitter retry on 429/network errors (mirrors Node/Go)
- Universal Auth login (client_id + client_secret → access token) — the one auth method every other SDK implemented first
- Secrets CRUD against /api/v3/secrets/raw: list, get, create, update, delete
- Typed error hierarchy wrapping HTTP failures with status/url/method context
- RSpec + WebMock test suite, GitHub Actions running tests + rubocop on PRs
- README with a usage example
One question I can't resolve myself:
Should this SDK take over the infisical-sdk name on RubyGems (currently squatted by the dead legacy gem), or ship under a new package name? Affects the gemspec from the start, so flagging before I write it.
Will follow this up with a draft PR shortly.
Context:
Infisical/infisical#6387 — the old infisical-sdk gem is deprecated (legacy cross-language architecture), and this repo was created for a new native Ruby SDK. I committed to building it;
here's the v1 scope I'm planning, modeled on the other native SDKs (node-sdk-v2, go-sdk, java-sdk) for consistency.
Posting here before opening the PR so concerns can get raised early.
In scope for v1:
One question I can't resolve myself:
Should this SDK take over the infisical-sdk name on RubyGems (currently squatted by the dead legacy gem), or ship under a new package name? Affects the gemspec from the start, so flagging before I write it.
Will follow this up with a draft PR shortly.