Pakettisopimus
Suunniteltu gem on nordic_devhouse ja ylätason moduuli NordicDevhouse. Se tarjoaa pienet muuttumattomat tulosobjektit ja uudelleenkäytettävän yhteyspoolatun asiakkaan.
| Jakelupaketti | Nimiavaruus tai import | Ajonaikainen tuki |
|---|---|---|
| nordic_devhouse | NordicDevhouse | Tuetut Ruby-julkaisulinjat |
Luo asiakas ja käytä sitä uudelleen
Ruby-rajapinta suosii nimettyjä argumentteja ja eksplisiittisiä tulosobjekteja. Yksi run-kutsu piilottaa pollauksen ja retryt muuttamatta vastauksia löyhiksi hasheiksi.
require "nordic_devhouse"
client = NordicDevhouse::Client.new(
api_key: ENV.fetch("NORDIC_DEVHOUSE_API_KEY"),
timeout: 30,
max_retries: 3
)
result = client.scrape.run(
url: "https://example.com/products",
formats: [:json],
idempotency_key: "catalog-2026-08-11"
)
puts [result.job_id, result.records].join(" ")Hallitse kestävää työtä
Start ja wait sopivat Sidekiq-, Active Job- ja muihin worker-järjestelmiin sitomatta ydingemiä niihin. Siirtototeutus voi tukea Fiber-scheduleria.
job = client.scrape.start(
url: "https://example.com/products",
formats: [:json]
)
result = client.jobs.wait(
job.id,
timeout: 600
)Julkiset mallit
Nimet noudattavat kielen käytäntöjä, mutta kaikki SDK:t säilyttävät samat kentät ja työn tilojen semantiikan.
| Käsite | Sopimus |
|---|---|
| Asiakkaan asetukset | API-avain, perusosoite, aikakatkaisu, retry-raja ja valinnainen testisiirto |
| Keräyspyyntö | URL, tulosmuodot, webhook-osoite, metatiedot ja idempotenssiavain |
| Työ | Vakaa tunniste, tila, aikaleimat, edistyminen ja varoitukset |
| Työn tulos | Työtunniste, tietuemäärä, tyypitetty data, metatiedot ja pyyntötunniste |
| Webhook-tapahtuma | Varmennettu tapahtumatunniste, tyyppi, aikaleima ja tyypitetty data |
Käsittele virheet idiomaattisesti
Kaikki poikkeukset perivät NordicDevhouse::Error-tyypin ja tarjoavat kentät code, request_id, status, attempts ja cause. RateLimited lisää retry_after- ja ValidationError issues-kentän.
begin
client.scrape.run(url: url, formats: [:json])
rescue NordicDevhouse::RateLimited => error
logger.warn("rate limited",
request_id: error.request_id,
retry_after: error.retry_after)
raise
rescue NordicDevhouse::ValidationError => error
render_validation(error.issues)
rescue NordicDevhouse::Error => error
logger.error("SDK failure", request_id: error.request_id)
raise
endVarmenna raaka webhook-runko
Varmennus käyttää täsmälleen vastaanotettuja tavuja, tarkistaa HMAC-SHA256-allekirjoituksen ja aikaleiman sallitun eron ja palauttaa tyypitetyn tapahtuman. Tallenna varmennettu tapahtumatunniste kaksoiskäsittelyn estämiseksi.
event = client.webhooks.verify(
payload: request.raw_post,
signature: request.get_header("HTTP_NORDIC_SIGNATURE"),
secret: ENV.fetch("NORDIC_WEBHOOK_SECRET")
)
import_result(event.data.job_id) if event.type == "scrape.completed"Ajonaikaiset ja elinkaaren säännöt
- 1Tue ylläpidettyjä Ruby-julkaisulinjoja ja julkaise tyypitetyt RBS-määritykset
- 2Käytä kutsurajapinnassa nimettyjä argumentteja
- 3Palauta muuttumattomat arvo-objektit OpenStruct-arvojen sijaan
- 4Käytä yhteyspoolia uudelleen ja tee close idempotentiksi
- 5Pidä Rails- ja Sidekiq-apurit valinnaisissa integraatiotiedostoissa