feature/smbcloud-deploy
claude/smbcloud-github-app-k9641p
development
feature/apps
feature/build-release
feature/ci-docs
feature/ci-ruby-gems
feature/cicd
feature/completion
feature/dist-nuget
feature/fix-ci-sdk-pypi-rubygem
feature/fix-clippy-on-stable-channel
feature/fix-deployment-script
feature/github-email
feature/gresiq-v1
feature/project-new-structure
feature/rsync-deploy
feature/ruby-runner
feature/sdk-npm
feature/sdk-workflows
feature/smbcloud-cli-release-npm
feature/smbcloud-deploy
feature/wasm
main
release/v0.7.4
Publishing the smbcloud-model gem
The gem wraps the smbcloud-model Rust crate via a native extension. Publishing requires coordinating the Rust crate release and the gem release in order.
Prerequisites
- Rust toolchain installed
bundlerandgemCLI available- RubyGems account with push access to
smbcloud-model
Steps
1. Publish the Rust crate
Publish smbcloud-model to crates.io first. The gem's native extension depends on it.
cargo publish -p smbcloud-model
2. Update the Cargo dependency
Switch gems/model/ext/model/Cargo.toml from the local path to the published version:
# Before (development)
smbcloud-model = { path = "./../../../../crates/smbcloud-model" }
# After (release) — match the version just published
smbcloud-model = "0.3"
3. Sync the gem version
Set gems/model/lib/model/version.rb to match the smbcloud-model crate version:
module Model
VERSION = '0.3.31'
end
4. Compile the native extension
cd gems/model
bundle exec rake compile
5. Build the gem
bundle exec rake build
This produces pkg/smbcloud-model-<version>.gem.
6. Publish the gem
gem push pkg/smbcloud-model-<version>.gem
Development workflow
To work against the local crate instead of the published one, use the path dependency:
smbcloud-model = { path = "./../../../../crates/smbcloud-model" }
Remember to revert this before publishing.