A summary of data about the Ruby ecosystem.

https://github.com/savonrb/savon

Heavy metal SOAP client
https://github.com/savonrb/savon

Keywords

ruby soap soap-client

Keywords from Contributors

activerecord activejob mvc rubygems rack rspec sinatra grape multithreading ruby-gem

Last synced: about 15 hours ago
JSON representation

Repository metadata

Heavy metal SOAP client

README.md

Savon

Heavy metal SOAP client

Ruby
Gem Version
Coverage Status

Savon is a SOAP client for Ruby. SOAP is the protocol spoken by many enterprise systems. When they hand you a WSDL URL or file instead of a REST spec, it's SOAP. Savon reads the WSDL, maps available operations to Ruby symbols, converts Ruby hashes to SOAP envelopes and turns XML responses into hashes you can work with.

Full documentation is at savonrb.com.

Installation

gem 'savon', '~> 2.17'

Usage

require 'savon'

# Point Savon to a local or remote WSDL document
client = Savon.client(wsdl: 'https://service.example.com?wsdl')

# See what the service exposes
client.operations
# => [:find_user, :create_user]

# Make a request and work with the response
response = client.call(:find_user, message: { id: 42 })
response.body[:find_user_response]
# => { id: 42, name: "Hoff" }

# Savon raises a Savon::SOAPFault when the server returns a SOAP fault
rescue Savon::SOAPFault => e
  puts e.to_hash.dig(:fault, :faultstring)

Enable logging to see the raw SOAP envelopes. That's probably the single most useful thing while getting a new integration working:

client = Savon.client(
  wsdl: 'https://service.example.com?wsdl',
  pretty_print_xml: true,
  log: true
)

Authentication

Most enterprise services require authentication. Common options:

# HTTP basic auth
Savon.client(wsdl: '...', basic_auth: ['user', 'secret'])

# WS-Security (WSSE)
Savon.client(wsdl: '...', wsse_auth: ['user', 'secret', :digest], wsse_timestamp: true)

See Authentication on the website for HTTP digest, NTLM, and certificate-based options.

Transport

Savon uses HTTPI for HTTP by default. Since v2.17.0 you can opt-in to use Faraday by passing transport: :faraday which exposes the Faraday connection at client.faraday for you to configure. Savon is only adding some SOAP-specifics on top.

Ruby support

Savon 2.x requires Ruby >= 3.0.0, kept as the lower bound for backward compatibility. Note that Ruby 3.0–3.3 are EOL or security-only. Ruby 3.4+ is the minimum version with active maintenance.

Versioning & stability

Savon follows Semantic Versioning 2.0.0. The changelog format is Keep a Changelog.

The 2.x line is anchored on 2.12.1. Every 2.x release is supposed to be safe to upgrade to from 2.12.1, and anything that worked in 2.12.1 keeps working. We do not remove or rename public APIs in the 2.x line. New behavior is opt-in and requires an explicit option change. If you found a problem with that, please let us know.

We only soft-deprecate APIs we plan to remove. The Deprecated sections of the changelog list every API that is planned to be removed with version 3.0.

Callers on 2.13.0–2.15.x may see specific post-2.12.1 behaviors restored to the 2.12.1 contract. This is intentional.

Known limitations

WSDL imports are not followed. Savon parses only the root WSDL document via Wasabi. Messages, port types, and bindings defined in imported files are invisible to Savon. If you control the WSDL, merge the imported elements into the root document and pass that to Savon as a string. If you need full import support, the WSDL gem is an alternative.

Contributing

See CONTRIBUTING.md. MIT licensed.


Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 3 days ago

Total Commits: 1,585
Total Committers: 129
Avg Commits per committer: 12.287
Development Distribution Score (DDS): 0.218

Commits in past year: 69
Committers in past year: 5
Avg Commits per committer in past year: 13.8
Development Distribution Score (DDS) in past year: 0.145

Name Email Commits
rubiii me@r****m 1239
Tim Jarratt t****t@g****m 65
Peter Cai 2****i 56
Olle Jonsson o****n@g****m 29
ashrocket a****y@r****t 8
Anthony Dmitriyev a****m@g****m 6
Ollivier Robert r****o@k****t 6
hoverlover h****r@g****m 5
Brian Fujito b****o@g****m 4
Dave Woodward d****e@f****m 4
Fredrik Wallgren f****n@g****m 4
Nathan Samson n****n@n****e 4
dependabot[bot] 4****] 4
Christian Haase c****e@i****m 3
Jakob Skjerning j****b@m****t 3
Tim Abdulla me@t****m 3
Tsyren Ochirov n****m@g****m 3
colonhyphenp d****e@g****m 3
sshaw s****w@g****m 3
Jim Kingdon j****n@m****m 3
Ayrat Badykov a****5@g****m 2
Andrey Novikov e****k@e****e 2
Alexander Kovalenko a****3@g****m 2
Adrian Mugnolo a****n@m****m 2
Avin Mathew a****w@a****m 2
Grant Defayette g****e@t****m 2
JP Moral jp@a****m 2
Josh Martin j****n@w****m 2
Bruno Aguirre yo@b****m 2
Connor Shea 2****a 2
and 99 more...

Committer domains:


Issue and Pull Request metadata

Last synced: 3 days ago

Total issues: 70
Total pull requests: 99
Average time to close issues: about 1 year
Average time to close pull requests: 6 months
Total issue authors: 59
Total pull request authors: 38
Average comments per issue: 4.71
Average comments per pull request: 1.84
Merged pull request: 70
Bot issues: 0
Bot pull requests: 3

Past year issues: 4
Past year pull requests: 14
Past year average time to close issues: 7 months
Past year average time to close pull requests: about 14 hours
Past year issue authors: 3
Past year pull request authors: 5
Past year average comments per issue: 0.5
Past year average comments per pull request: 0.36
Past year merged pull request: 11
Past year bot issues: 0
Past year bot pull requests: 3

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/savonrb/savon

Top Issue Authors

  • pcai (5)
  • olleolleolle (4)
  • doconnor-clintel (3)
  • moiristo (2)
  • migalenkom (2)
  • aleksandrs-ledovskis (1)
  • jules-w2 (1)
  • aedryan (1)
  • luispcosta (1)
  • atrzaska (1)
  • sarahsehr (1)
  • scottbarrow (1)
  • choosen (1)
  • DonGiulio (1)
  • lukaso (1)

Top Pull Request Authors

  • olleolleolle (18)
  • pcai (12)
  • rubiii (8)
  • doconnor-clintel (8)
  • LukeIGS (5)
  • larskanis (4)
  • kjeldahl (4)
  • dependabot[bot] (3)
  • magneland (2)
  • lluis (2)
  • ekzobrain (2)
  • ehutzelman (2)
  • dduugg (2)
  • gogainda (2)
  • Ezveus (2)

Top Issue Labels

  • stale (17)
  • Question (1)

Top Pull Request Labels

  • Dependencies (4)
  • github_actions (3)

Package metadata

gem.coop: savon

Heavy metal SOAP client

  • Homepage: https://savonrb.com
  • Documentation: http://www.rubydoc.info/gems/savon/
  • Licenses: MIT
  • Latest release: 2.17.2 (published 6 days ago)
  • Last Synced: 2026-06-12T22:01:23.878Z (3 days ago)
  • Versions: 97
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 96,812,640 Total
  • Docker Downloads: 7,225,790
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Downloads: 0.283%
    • Average: 0.351%
    • Docker downloads count: 1.123%
  • Maintainers (4)
rubygems.org: savon

Heavy metal SOAP client

  • Homepage: https://savonrb.com
  • Documentation: http://www.rubydoc.info/gems/savon/
  • Licenses: MIT
  • Latest release: 2.17.2 (published 6 days ago)
  • Last Synced: 2026-06-13T00:32:00.568Z (3 days ago)
  • Versions: 97
  • Dependent Packages: 602
  • Dependent Repositories: 4,963
  • Downloads: 96,815,399 Total
  • Docker Downloads: 7,225,790
  • Rankings:
    • Dependent packages count: 0.075%
    • Downloads: 0.281%
    • Dependent repos count: 0.45%
    • Average: 0.762%
    • Forks count: 0.907%
    • Stargazers count: 1.114%
    • Docker downloads count: 1.743%
  • Maintainers (4)
proxy.golang.org: github.com/savonrb/savon

  • Homepage:
  • Documentation: https://pkg.go.dev/github.com/savonrb/savon#section-documentation
  • Licenses: mit
  • Latest release: v2.17.2+incompatible (published 6 days ago)
  • Last Synced: 2026-06-11T14:23:45.040Z (5 days ago)
  • Versions: 72
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent packages count: 6.456%
    • Average: 6.674%
    • Dependent repos count: 6.892%
gem.coop: savon_with_adapter

Heavy metal SOAP client that can accept adapter option

  • Homepage: https://github.com/savonrb/savon/pull/566
  • Documentation: http://www.rubydoc.info/gems/savon_with_adapter/
  • Licenses: MIT
  • Latest release: 2.4.1 (published about 12 years ago)
  • Last Synced: 2026-06-11T14:23:29.419Z (5 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 4,076 Total
  • Rankings:
    • Dependent repos count: 0.0%
    • Dependent packages count: 0.0%
    • Average: 26.438%
    • Downloads: 79.314%
  • Maintainers (1)
rubygems.org: savon_with_adapter

Heavy metal SOAP client that can accept adapter option

  • Homepage: https://github.com/savonrb/savon/pull/566
  • Documentation: http://www.rubydoc.info/gems/savon_with_adapter/
  • Licenses: MIT
  • Latest release: 2.4.1 (published about 12 years ago)
  • Last Synced: 2026-06-11T14:23:29.379Z (5 days ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 4,076 Total
  • Rankings:
    • Forks count: 0.822%
    • Stargazers count: 1.008%
    • Dependent packages count: 15.706%
    • Average: 29.089%
    • Dependent repos count: 46.782%
    • Downloads: 81.128%
  • Maintainers (1)

Dependencies

.github/workflows/gem_push.yml actions
  • actions/checkout df4cb1c069e1874edd31b4311f1884172cec0e10 composite
  • ruby/setup-ruby afeafc3d1ab54a631816aba4c914a0081c12ff2f composite
  • rubygems/release-gem 6317d8d1f7e28c24d28f6eff169ea854948bd9f7 composite
.github/workflows/ci.yml actions
  • actions/checkout v3 composite
  • ruby/setup-ruby v1 composite
Gemfile rubygems
  • httpclient ~> 2.7.1
  • simplecov >= 0
savon.gemspec rubygems
  • byebug >= 0 development
  • json >= 2.3.0 development
  • mocha ~> 0.14 development
  • puma >= 4.3.8, < 7 development
  • rack < 4 development
  • rake >= 12.3.3 development
  • rspec ~> 3.9 development
  • akami ~> 1.2
  • builder >= 2.1.2
  • gyoku ~> 1.2
  • httpi >= 2.4.5
  • mail ~> 2.5
  • nokogiri >= 1.8.1
  • nori ~> 2.4
  • wasabi ~> 3.4

Score: 31.66300249288542