Ruby Gem package guidelines
Package naming
For libraries, use ruby-$_gemname. For applications, use the program name. In either case, the name should be entirely lowercase.
Always append ruby- prefix even if $_gemname already starts with word ruby. It is needed to avoid future name clashes in case a gem with shorter name appear. It also makes names more easily parsable by tools (think about PKGBUILD generators/version or dependency checkers, etc...).
Versioned packages
If you need to add a versioned package then use ruby-$_gemname-$version, e.g. ruby-builder-3.2.1. So rubygem dependency builder=3.2.1 will turn into ruby-builder-3.2.1 Arch package.
In case if you need to resolve "approximately greater" dependency ~> then package should use version without the last part, e.g. rubygem dependency will turn into . An exception for this rule is when "approximately greater" dependency matches the latest version of the gem - in this case avoid introducing a new versioned package and use just ruby-$_gemname instead (the HEAD version).
Another problem with versioned packages is that it can conflict with other versions, e.g. because the packages install the same files in /usr/bin. One solution for this problem is that versioned packages should not install such files - only HEAD version package can do this.
Examples
For examples, please see or .
Notes
Add to gem arguments to receive additional information in case of troubles.
--no-user-install gem argument is mandatory since latest Ruby versions (See FS#28681 for details).Quarry
As an alternative to manually managing gemfiles, you might also want to consider quarry, a non-official repository of pre-built binary arch packages. See Quarry for details.
Gotchas
Package contains reference to $pkgdir
Sometimes when you build the package you can see following warning WARNING: Package contains reference to $pkgdir. Some packed files contain absolute path of directory where you built the package. To find these files run . Most likely the reason will be hardcoded path in .
After is over the is not needed anymore. In fact none of the files in ext is needed and it can be completely removed by adding to function.