Артефакт Ruby
Портативний самодостатній дистрибутив інтерпретатора Ruby. Цей репозиторій використовується Embedbits Platform Artifact Handler для пошуку, завантаження, перевірки та налаштування інтерпретатора Ruby в подальших embedded-інструментах збірки — насамперед для запуску генератора моків CMock і скриптів генерації test runner з Unity без залежності від того, який Ruby встановлено (або не встановлено) на хост-машині.
Цей репозиторій поділено на три гілки/посилання за ролями: гілка main (master), яку ви зараз читаєте, містить лише цю документацію; скрипти handler містяться в гілці Core, а версіоновані бінарні файли публікуються як GitHub Releases, прив'язані до гілки Bin.
Вміст репозиторію
main / master
└── README.md ← This document — no other content
Core
├── ArtifactConfig.cmake ← Artifact metadata (name, version constraints, asset naming)
└── CMakeRubyDefaults.cmake ← Ruby integration logic (interpreter path setup)
Bin (anchor branch — no tracked binary files)
└── (empty commits only; each release tag points here)
Роль у платформі
Upstream GitHub (Embedbits)
────────────────────────────────────── ──────────────────────────────────────────
oneclick/rubyinstaller2 Artifact-ruby
rubyinstaller-<ver>-<rev>-x64.7z ──► main / master → README only (this document)
Homebrew/homebrew-portable-ruby Core → ArtifactConfig.cmake, CMakeRubyDefaults.cmake
portable-ruby-<ver>.<os>.bottle.tar.gz Bin → Anchor branch (empty commits)
Releases → ruby-<version>-<platform>.zip + .hash
tagged Bin/<version>-<platform>
Оригінальний проєкт Ruby публікує лише вихідний код, тому Ruby_Importer.sh поєднує два добре підтримувані джерела портативних збірок і перепаковує обидва в .zip так, щоб корінь інсталяції Ruby (bin/, lib/, ...) містився на верхньому рівні архіву.
Підтримувані платформи
| Код платформи | Ціль | Джерело |
|---|---|---|
Win | Windows x86_64 (UCRT) | RubyInstaller2 — портативний архів .7z (без інсталятора, без MSYS2 DevKit) |
Unix | Linux x86_64 (glibc) | Homebrew portable-ruby — bottle x86_64_linux |
DarwinARM | macOS arm64 (11+) | Homebrew portable-ruby — bottle arm64_big_sur |
Покриття версій різниться залежно від платформи. RubyInstaller2 публікує кожен реліз Ruby, тоді як Homebrew збирає лише ті версії, які сам постачає. Тому певна версія може існувати лише як
Bin/<version>-Win. Обирайте версію, доступну для всіх платформ, потрібних вашому проєкту (наприклад,3.4.5).
Якщо оригінальне джерело перепаковує ту саму версію Ruby (суфікс -<rev> у RubyInstaller, суфікс _<rev> у Homebrew), імпортується лише найвища ревізія. Попередні випуски (prerelease) ігноруються.
Структура гілок
| Гілка / посилання | Вміст |
|---|---|
main / master | Лише цей README — жодного функціонального вмісту |
Core | Скрипти CMake handler для використання артефакту |
Bin | Лише якірна гілка — бінарні файли тут не комітяться |
Тег релізу Bin/<version>-<platform> | GitHub Release з архівом .zip та файлом контрольної суми .hash |
Примітка: На Git-хостингу без Releases API (Azure DevOps) той самий імпортер комітить
.zip+.hashбезпосередньо в гілкуBinі тегує цей коміт якBin/<version>-<platform>. Handler для CMake прозоро розпізнає обидві форми.
Отримання релізу
gh release download Bin/3.4.5-Unix --repo Embedbits/Artifact-ruby --pattern "ruby-3.4.5-Unix.*"
Структура пакета
ruby-<version>-<platform>.zip
├── bin/ ← ruby / ruby.exe, gem, bundle, ...
├── lib/ ← standard library and default gems
└── ...
Версіонування
Версії артефакту безпосередньо відповідають версіям релізів Ruby:
3.3.8, 3.4.5, 4.0.7, ...
Примітки
- Встановлення не потрібне — обидві збірки є переміщуваними (relocatable) і запускаються з будь-якої теки.
- Збірка для Windows не містить MSYS2 DevKit, тому gems із нативними розширеннями на C із нею зібрати не можна. Інструментам на чистому Ruby, як-от CMock і скрипти Unity, він не потрібен.
- Офлайн-використання підтримується після локального кешування артефакту.
Ліцензія
Ruby розповсюджується за подвійною ліцензією Ruby License / BSD-2-Clause. Докладніше: https://www.ruby-lang.org/en/about/license.txt
Збірки RubyInstaller2 і Homebrew portable-ruby містять додаткові сторонні бібліотеки (OpenSSL, libyaml, libffi, zlib та інші), кожна зі своєю ліцензією.
Автори
- Mr.Nobody — embedbits.com
Запрошуємо до співпраці! Будь ласка, відкрийте pull request.