Open YOU54F opened 1 month ago
Experiment of pact-ruby exposing both it's existing interface, and allowing for access to the pact_ffi interface too, so we can allow for backwards compat with the existing implementation but to allow people to try out new features.
https://github.com/safdotdev/pact-ruby-e2e-example/tree/feat/ffi
:memo: Background
One of the strengths of Pact is its specification, allowing anybody to create a new language binding in an interoperable way.
Pact-ruby support up to v2.0 of the pact-specification, and was distributed and used in other languages via travelling ruby.
For a fuller background, please see
For a view of the pact-ruby ecosystem, please see
The main functionality of the Pact-ruby project has been replaced by a core library written in Rust (pact-foundation/pact-reference). This library exposes both command line applications & a foreign function interface which other languages can leverage without the need to re-implement a lot of the logic. The core library helps to maintain parity across the different clients and helps with the adoption of new features.
It has the benefit of supports up to the current Pact V4 specification, which allows end-users to leverage the pact-plugin ecosystem, along with several other quality of life benefits.
For a view of the rust ecosystem, please see
🔍 Overview of the pact-ruby ecosystem
🤔 Challenges
Issues resolved by leveraging the rust core
The rust core may exhibit different behaviour than the current ruby core. In some cases, leveraging the rust core may fix existing defects raised against the pact-ruby projects. Below are a list of some to consider
Validation