Перейти до основного вмісту

Артефакт 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/, ...) містився на верхньому рівні архіву.


Підтримувані платформи​

Код платформиЦільДжерело
WinWindows x86_64 (UCRT)RubyInstaller2 — портативний архів .7z (без інсталятора, без MSYS2 DevKit)
UnixLinux x86_64 (glibc)Homebrew portable-ruby — bottle x86_64_linux
DarwinARMmacOS 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 та інші), кожна зі своєю ліцензією.


Автори​

Запрошуємо до співпраці! Будь ласка, відкрийте pull request.