-
-
Notifications
You must be signed in to change notification settings - Fork 345
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposal: Overhaul the Ruby library wrapping #91
Comments
I'm all for going as flat as possible. Whichever model allows us to push out updates the most easily, I'm for. |
As a starting point, I've just created a new repo to flatten the two npm repositories into one: https://github.com/pact-foundation/pact-standalone-npm. As part of bringing this into Stay tuned. |
@mefellows you can merge the mock service and verifier together, potentially from the ruby side to make it easier, but you can't merge pact-node and the pact-x-npm repos. The latter creates and deploys separate OS/Architecture specific binaries, while pact-node just downloads the one that meets the user's criteria. Personally, I'd prefer to spend that time to actually get the rust implementation ready and just use that instead. |
How's your Rust @mboudreau ;-) |
OK, see https://github.com/pact-foundation/pact-standalone-npm and pact-foundation/pact-js-core#45. Things are moving. Once this is done, I can pick back up some of the other key issues, namely #84, #81 and moving all commands to use 'service' to fix the windows forking issue. |
- Fixes Windows forking issue increasing compatibility - See pact-foundation/pact-python#40 and pact-foundation/pact-js#91 (comment) - Pact Go and Pact Python have both implemented this
Closing - the upgrade to pact-node 5.x.x (not too far away) will address this. See https://github.com/pact-foundation/pact-js/tree/feat/pact-node-5xx for WIP branch. |
Currently, to make an update to core behaviour in the Pact JS library, we depend on the following upstream NPM dependencies to be updated before they are made available to
pact-js
:These libraries in one way or another wrap the underlying Ruby libraries that provide core Pact functionality.
These capabilities have been amalgamated into a single Ruby package: https://github.com/pact-foundation/pact-ruby-standalone/ for convenience of library authors.
Pact Python and Pact Go take the simpler approach of embedding this directly in the main repository and do away with extra dependencies.
Pact Go has the advantage of distributing as a releasable binary package, and thus can create OS specific packages at release time.
Python pulls in the correct OS at install time.
Pros and Cons of each approach
Advantages of separate repositories:
Disadvantages
package-lock.json
properly, as the optional dependency will lock in the incorrect OS. See Not finding linux pact mock service on centos 7 pact-js-core#42 for backgroundOptions
pact-provider-verifier-npm
,pact-mock-service-npm
) into a single standalone wrapper, which usespreinstall
to dynamically install the correct ruby standalone andpostinstall
to validate the installationpact-provider-verifier-npm
andpact-mock-service-npm
and bring intopact-node
pact-provider-verifier-npm
,pact-mock-service-npm
andpact-node
and move everything into pact-jsThe text was updated successfully, but these errors were encountered: