diff --git a/dev-ruby/bicho/Manifest b/dev-ruby/bicho/Manifest
new file mode 100644
index 0000000000000..33f979e14a807
--- /dev/null
+++ b/dev-ruby/bicho/Manifest
@@ -0,0 +1 @@
+DIST bicho-0.0.18.tar.gz 81846 BLAKE2B 5d932c137f1c04b5b0a8d564cc5b619b449b8a145fb3086b3d7fbf283cdaee3ee8e5d0b3be9f437255764c0cd1f4fb4fec4367bb53bb2d954142ffaf7803495d SHA512 23e159ec635f355f7f0537ea6095a01e1aad99fe0ceb3f6088069e305ad23133fa8c57855f9100e9dba22cc38372cc17d0d803872b3d847029afb3fcf9b9d148
diff --git a/dev-ruby/bicho/bicho-0.0.18.ebuild b/dev-ruby/bicho/bicho-0.0.18.ebuild
new file mode 100644
index 0000000000000..163dfda2130b6
--- /dev/null
+++ b/dev-ruby/bicho/bicho-0.0.18.ebuild
@@ -0,0 +1,47 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby32 ruby33 ruby34"
+
+RUBY_FAKEGEM_EXTRADOC="README.md"
+RUBY_FAKEGEM_GEMSPEC="bicho.gemspec"
+
+inherit ruby-fakegem
+
+DESCRIPTION="ruby Bugzilla access library"
+HOMEPAGE="https://github.com/dmacvicar/bicho"
+SRC_URI="https://github.com/dmacvicar/bicho/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1-2)"
+KEYWORDS="~amd64"
+IUSE="test"
+
+ruby_add_rdepend "
+ dev-ruby/highline:3
+ dev-ruby/inifile:3
+ >=dev-ruby/nokogiri-1.10.4:0
+ dev-ruby/optimist:3
+ >=dev-ruby/xmlrpc-0.3.0 =dev-ruby/xmlrpc-0.3*
+"
+
+ruby_add_bdepend "test? (
+ dev-ruby/minitest
+ dev-ruby/vcr
+ dev-ruby/webmock
+)"
+
+all_ruby_prepare() {
+ # Fix dependencies to adhere to semver
+ sed -e '/nokogiri/ s/1.10.4/1.10/' \
+ -e '/highline/ s/2.0.0/2.0/' \
+ -e '/highline/ s/~>/>=/' \
+ -e '/optimist/ s/3.0.0/3.0/' \
+ -i ${RUBY_FAKEGEM_GEMSPEC} || die
+
+ # Avoid unneeded development dependencies
+ sed -i -e '/bundler/ s:^:#:' Rakefile test/helper.rb || die
+ sed -i -e '/reporters/ s:^:#: ; /Reporters/,/^)/ s:^:#:' test/helper.rb || die
+}
diff --git a/dev-ruby/bicho/metadata.xml b/dev-ruby/bicho/metadata.xml
new file mode 100644
index 0000000000000..3c504397297bc
--- /dev/null
+++ b/dev-ruby/bicho/metadata.xml
@@ -0,0 +1,14 @@
+
+
+
+
+ csfore@gentoo.org
+
+
+ ruby@gentoo.org
+
+
+ dmacvicar/bicho
+ bicho
+
+
diff --git a/dev-ruby/inifile/Manifest b/dev-ruby/inifile/Manifest
new file mode 100644
index 0000000000000..ecb474f22dca4
--- /dev/null
+++ b/dev-ruby/inifile/Manifest
@@ -0,0 +1 @@
+DIST inifile-3.0.0.gem 18432 BLAKE2B 28c778b9dc49e618dd5f86ab6d87a21e6a1e8ff577ce98390a7767778033012fc3c4d5476de48d80807b0a74bace0b5f775317106949fe142e88854a95436e94 SHA512 d77344812bb62a5639b0a36e5ac2726280990210000b85bab700819fe0fb9f56415517c00436d0056ca090e3d568596bc30f8ed211a00aced5b929e534d0a72b
diff --git a/dev-ruby/inifile/files/inifile-3.0.0-tainted.patch b/dev-ruby/inifile/files/inifile-3.0.0-tainted.patch
new file mode 100644
index 0000000000000..b668a0210fd75
--- /dev/null
+++ b/dev-ruby/inifile/files/inifile-3.0.0-tainted.patch
@@ -0,0 +1,46 @@
+From 7df4ede3acd0281667f001d2b120bf3c0011c308 Mon Sep 17 00:00:00 2001
+From: Juha Korpela <43556489+jkorpela@users.noreply.github.com>
+Date: Tue, 28 Mar 2023 17:16:22 -0400
+Subject: [PATCH] Remove taintedness as it was removes in Ruby 3.2
+
+---
+ lib/inifile.rb | 14 +-------------
+ 1 file changed, 1 insertion(+), 13 deletions(-)
+
+diff --git a/lib/inifile.rb b/lib/inifile.rb
+index fbcfb0e..395b5ba 100644
+--- a/lib/inifile.rb
++++ b/lib/inifile.rb
+@@ -323,17 +323,6 @@ def freeze
+ self
+ end
+
+- # Public: Mark this IniFile as tainted -- this will traverse each section
+- # marking each as tainted.
+- #
+- # Returns this IniFile.
+- def taint
+- super
+- @ini.each_value {|h| h.taint}
+- @ini.taint
+- self
+- end
+-
+ # Public: Produces a duplicate of this IniFile. The duplicate is independent
+ # of the original -- i.e. the duplicate can be modified without changing the
+ # original. The tainted state of the original is copied to the duplicate.
+@@ -343,13 +332,12 @@ def dup
+ other = super
+ other.instance_variable_set(:@ini, Hash.new {|h,k| h[k] = Hash.new})
+ @ini.each_pair {|s,h| other[s].merge! h}
+- other.taint if self.tainted?
+ other
+ end
+
+ # Public: Produces a duplicate of this IniFile. The duplicate is independent
+ # of the original -- i.e. the duplicate can be modified without changing the
+- # original. The tainted state and the frozen state of the original is copied
++ # original. The frozen state of the original is copied
+ # to the duplicate.
+ #
+ # Returns a new IniFile.
diff --git a/dev-ruby/inifile/inifile-3.0.0.ebuild b/dev-ruby/inifile/inifile-3.0.0.ebuild
new file mode 100644
index 0000000000000..0866ae40cea94
--- /dev/null
+++ b/dev-ruby/inifile/inifile-3.0.0.ebuild
@@ -0,0 +1,30 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby32 ruby33 ruby34 ruby40"
+
+RUBY_FAKEGEM_EXTRADOC="History.txt README.md"
+
+inherit ruby-fakegem
+
+DESCRIPTION="Native Ruby package for reading and writing INI files"
+HOMEPAGE="https://github.com/twp/inifile"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)"
+KEYWORDS="~amd64"
+
+PATCHES=( "${FILESDIR}/${P}-tainted.patch" )
+
+all_ruby_prepare() {
+ # Taint has been removed from ruby and not done anything since ruby 2.7
+ sed -e '/test_taint/,/^ end/ s:^:#:' \
+ -e '/taint/ s:^:#:' \
+ -i test/test_inifile.rb || die
+}
+
+each_ruby_test() {
+ ${RUBY} -Ilib:.:test -e "Dir['test/test_*.rb'].each { require _1 }" || die
+}
diff --git a/dev-ruby/inifile/metadata.xml b/dev-ruby/inifile/metadata.xml
new file mode 100644
index 0000000000000..41f9d7441183b
--- /dev/null
+++ b/dev-ruby/inifile/metadata.xml
@@ -0,0 +1,14 @@
+
+
+
+
+ csfore@gentoo.org
+
+
+ ruby@gentoo.org
+
+
+ twp/inifile
+ inifile
+
+
diff --git a/dev-ruby/phlex/Manifest b/dev-ruby/phlex/Manifest
new file mode 100644
index 0000000000000..aa3afbf4ef45a
--- /dev/null
+++ b/dev-ruby/phlex/Manifest
@@ -0,0 +1,4 @@
+DIST phlex-1.11.0.tar.gz 87149 BLAKE2B 424e79b7fb3f21f477bab85d83c40d24b1714d041adf108bfb533961ff8db6c67424a789a0c8c91716b4d1a13d9e8ed320a4f7628b99220bbb1c80f82f0e5896 SHA512 bc301bb8a7e1277cdcb29968312531622b6304a1f0de60b9ff2f478681937866a85fe4aaff1027bc775702d48b0a5d96d84f70b92ec5e5528822821b0db5d403
+DIST phlex-2.2.1.tar.gz 89993 BLAKE2B 8e0d8cc1658419364173d0ef082a3bbdb979a798ad276e522eff27b2ed562bf8a2367e9308ac9e3611adbe55607c0e190dc2ebb11ca9a1b1bd8d3286934f2515 SHA512 d8c2115c19901c870d55063f58cb6e8e672eee1f70900881e59cf94ad79fd608a654f153248dd9defa6d5cdaf8fb9a28a6457b5d0265189b64d95e8a609bd51e
+DIST phlex-2.3.0.tar.gz 90278 BLAKE2B 0be019e0ab464b438b22940a4c9873cdb19309550164b64ddacdf402524b1867f8ba817cca95ff39f0e0a40022bac8854726ecdbf7960ef751a85d4bc87549aa SHA512 01e336d09c6bae7056845c19eeef6e4b1e9e9fec3cbe850409ca9088efb1358a3fb4af2c04e6160d4456a537feaea95da2d4441153103799615cad2c793df8a7
+DIST phlex-2.3.1.tar.gz 90800 BLAKE2B 3567bd017d14540f5e66a4a0b4c781000224c928feeda4969877a7f62903cfdb5c4c8b2e1fd4b2cb07adb063cb00a3854e30daf4d84cba40de8945b610b39dde SHA512 4f73b56fcb12f4761f14be07bc9730a71a06f6a8745f2966942d03ca03b3e8f95823233dc5306558c0b53201a2388c5bbb4e5a33ac586b4407405b35cac69bf4
diff --git a/dev-ruby/phlex/metadata.xml b/dev-ruby/phlex/metadata.xml
new file mode 100644
index 0000000000000..15abd4cda216f
--- /dev/null
+++ b/dev-ruby/phlex/metadata.xml
@@ -0,0 +1,14 @@
+
+
+
+
+ csfore@gentoo.org
+
+
+ ruby@gentoo.org
+
+
+ yippee-fun/phlex
+ phlex
+
+
diff --git a/dev-ruby/phlex/phlex-1.11.0.ebuild b/dev-ruby/phlex/phlex-1.11.0.ebuild
new file mode 100644
index 0000000000000..bad16d3e9f256
--- /dev/null
+++ b/dev-ruby/phlex/phlex-1.11.0.ebuild
@@ -0,0 +1,39 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+USE_RUBY="ruby31 ruby32 ruby33 ruby34"
+
+RUBY_FAKEGEM_BINWRAP=""
+RUBY_FAKEGEM_EXTRADOC="CHANGELOG.md README.md"
+RUBY_FAKEGEM_GEMSPEC="phlex.gemspec"
+RUBY_FAKEGEM_RECIPE_TEST="sus"
+
+inherit ruby-fakegem
+
+DESCRIPTION="A framework for building object-oriented views in Ruby"
+HOMEPAGE="https://github.com/yippee-fun/phlex"
+SRC_URI="https://github.com/yippee-fun/phlex/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)"
+KEYWORDS="~amd64"
+IUSE="test"
+
+ruby_add_bdepend "test? (
+ >=dev-ruby/concurrent-ruby-1.2:1
+)"
+
+all_ruby_prepare() {
+ sed -e 's:_relative ": "./:' \
+ -e 's/__dir__/"."/' \
+ -i ${RUBY_FAKEGEM_GEMSPEC} || die
+
+ sed -e '/bundler/I s:^:#:' \
+ -e '1irequire "concurrent"' \
+ -i config/sus.rb || die
+}
+
+each_ruby_test() {
+ RUBYLIB=lib each_fakegem_test
+}
diff --git a/dev-ruby/phlex/phlex-2.2.1.ebuild b/dev-ruby/phlex/phlex-2.2.1.ebuild
new file mode 100644
index 0000000000000..7f652dd9f9e68
--- /dev/null
+++ b/dev-ruby/phlex/phlex-2.2.1.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+USE_RUBY="ruby32 ruby33 ruby34"
+
+RUBY_FAKEGEM_BINWRAP=""
+RUBY_FAKEGEM_EXTRADOC="README.md"
+RUBY_FAKEGEM_GEMSPEC="phlex.gemspec"
+RUBY_FAKEGEM_RECIPE_TEST="sus"
+
+inherit ruby-fakegem
+
+DESCRIPTION="A framework for building object-oriented views in Ruby"
+HOMEPAGE="https://github.com/yippee-fun/phlex"
+SRC_URI="https://github.com/yippee-fun/phlex/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1)"
+KEYWORDS="~amd64"
+IUSE="test"
+
+ruby_add_rdepend ">=dev-ruby/zeitwerk-2.7:2"
+
+ruby_add_bdepend "test? (
+ >=dev-ruby/concurrent-ruby-1.2:1
+)"
+
+all_ruby_prepare() {
+ sed -e 's:_relative ": "./:' \
+ -e 's/__dir__/"."/' \
+ -i ${RUBY_FAKEGEM_GEMSPEC} || die
+
+ sed -e '/bundler/I s:^:#:' \
+ -e '1irequire "concurrent"' \
+ -e '/simplecov/,/SimpleCov.command_name/ s:^:#:' \
+ -i config/sus.rb || die
+}
+
+each_ruby_test() {
+ RUBYLIB=lib each_fakegem_test
+}
diff --git a/dev-ruby/phlex/phlex-2.3.0.ebuild b/dev-ruby/phlex/phlex-2.3.0.ebuild
new file mode 100644
index 0000000000000..61709e8cc22dd
--- /dev/null
+++ b/dev-ruby/phlex/phlex-2.3.0.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+USE_RUBY="ruby32 ruby33 ruby34"
+
+RUBY_FAKEGEM_BINWRAP=""
+RUBY_FAKEGEM_EXTRADOC="README.md"
+RUBY_FAKEGEM_GEMSPEC="phlex.gemspec"
+RUBY_FAKEGEM_RECIPE_TEST="sus"
+
+inherit ruby-fakegem
+
+DESCRIPTION="A framework for building object-oriented views in Ruby"
+HOMEPAGE="https://github.com/yippee-fun/phlex"
+SRC_URI="https://github.com/yippee-fun/phlex/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1-2)"
+KEYWORDS="~amd64"
+IUSE="test"
+
+ruby_add_rdepend ">=dev-ruby/zeitwerk-2.7:2"
+
+ruby_add_bdepend "test? (
+ >=dev-ruby/concurrent-ruby-1.2:1
+)"
+
+all_ruby_prepare() {
+ sed -e 's:_relative ": "./:' \
+ -e 's/__dir__/"."/' \
+ -i ${RUBY_FAKEGEM_GEMSPEC} || die
+
+ sed -e '/bundler/I s:^:#:' \
+ -e '1irequire "concurrent"' \
+ -e '/simplecov/,/SimpleCov.command_name/ s:^:#:' \
+ -i config/sus.rb || die
+}
+
+each_ruby_test() {
+ RUBYLIB=lib each_fakegem_test
+}
diff --git a/dev-ruby/phlex/phlex-2.3.1.ebuild b/dev-ruby/phlex/phlex-2.3.1.ebuild
new file mode 100644
index 0000000000000..b82b8db03953a
--- /dev/null
+++ b/dev-ruby/phlex/phlex-2.3.1.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+USE_RUBY="ruby32 ruby33 ruby34"
+
+RUBY_FAKEGEM_BINWRAP=""
+RUBY_FAKEGEM_EXTRADOC="README.md"
+RUBY_FAKEGEM_GEMSPEC="phlex.gemspec"
+RUBY_FAKEGEM_RECIPE_TEST="sus"
+
+inherit ruby-fakegem
+
+DESCRIPTION="A framework for building object-oriented views in Ruby"
+HOMEPAGE="https://github.com/yippee-fun/phlex"
+SRC_URI="https://github.com/yippee-fun/phlex/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="$(ver_cut 1-2)"
+KEYWORDS="~amd64"
+IUSE="test"
+
+ruby_add_rdepend ">=dev-ruby/zeitwerk-2.7:2"
+
+ruby_add_bdepend "test? (
+ >=dev-ruby/concurrent-ruby-1.2:1
+)"
+
+all_ruby_prepare() {
+ sed -e 's:_relative ": "./:' \
+ -e 's/__dir__/"."/' \
+ -i ${RUBY_FAKEGEM_GEMSPEC} || die
+
+ sed -e '/bundler/I s:^:#:' \
+ -e '1irequire "concurrent"' \
+ -e '/simplecov/,/SimpleCov.command_name/ s:^:#:' \
+ -i config/sus.rb || die
+}
+
+each_ruby_test() {
+ RUBYLIB=lib each_fakegem_test
+}