diff --git a/user/ruby-rspec-core/APKBUILD b/user/ruby-rspec-core/APKBUILD
new file mode 100644
index 0000000000000000000000000000000000000000..34deeb73ddf6c0f8007e2c5991c6dbf505e9737c
--- /dev/null
+++ b/user/ruby-rspec-core/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=ruby-rspec-core
+_gemname=${pkgname#ruby-}
+pkgver=3.8.0
+pkgrel=0
+pkgdesc="RSpec runner and formatters"
+url="https://relishapp.com/rspec/rspec-core/"
+arch="noarch"
+options="!check"  # rspec's tests are written in rspec
+license="MIT"
+depends="ruby ruby-rspec-support~=${pkgver%.*}"
+source="$pkgname-$pkgver.tar.gz::https://github.com/rspec/$_gemname/archive/v$pkgver.tar.gz
+	gemspec.patch"
+builddir="$srcdir/$_gemname-$pkgver"
+
+build() {
+	cd "$builddir"
+	gem build $_gemname.gemspec
+}
+
+package() {
+	local gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')"
+
+	cd "$builddir"
+	gem install --local \
+		--install-dir "$gemdir" \
+		--bindir "$pkgdir/usr/bin" \
+		--ignore-dependencies \
+		--no-document \
+		--verbose \
+		$_gemname
+
+	# Clean-up...
+	rm -r "$gemdir"/cache \
+		"$gemdir"/build_info \
+		"$gemdir"/doc
+}
+
+sha512sums="6d3f431a1f9485009f5029bea967f36cb789be8cf33722b36c40df44e12a2284674c6c8af333bfe8ba8825e032576569fd42c92f798988faad732ac3a720c5e6  ruby-rspec-core-3.8.0.tar.gz
+e0cbcfddcc4c73d9b9673907e3b1a785b399c0b3b213761e9dbca9fadc55d50a88389eaf561f5603bd674eb94ce9f2ecf829d884eaa77df8ef1b565c0c7f25f2  gemspec.patch"
diff --git a/user/ruby-rspec-core/gemspec.patch b/user/ruby-rspec-core/gemspec.patch
new file mode 100644
index 0000000000000000000000000000000000000000..0a6cad0d0e22b581cb29d95b78101f54825b356c
--- /dev/null
+++ b/user/ruby-rspec-core/gemspec.patch
@@ -0,0 +1,16 @@
+--- a/rspec-core.gemspec
++++ b/rspec-core.gemspec
+@@ -13,11 +13,10 @@
+   s.summary     = "rspec-core-#{RSpec::Core::Version::STRING}"
+   s.description = "BDD for Ruby. RSpec runner and example groups."
+ 
+-  s.files            = `git ls-files -- lib/*`.split("\n")
+-  s.files           += %w[README.md LICENSE.md Changelog.md .yardopts .document]
++  s.files            = Dir["lib/**/*"]
+   s.test_files       = []
+   s.bindir           = 'exe'
+-  s.executables      = `git ls-files -- exe/*`.split("\n").map{ |f| File.basename(f) }
++  s.executables      = Dir["exe/*"].map{ |f| File.basename(f) }
+   s.rdoc_options     = ["--charset=UTF-8"]
+   s.require_path     = "lib"
+