ruby -run

29 October 2024

Photo by afiq fatah on Unsplash

Ruby is well known as a language that is easy to use from the surface but is very deep and complex underneath. That’s what we know and love about it as a language. Its standard library has a similar design and as such it contains many hidden gems. One of the gems I’ve learned about recently is un. It’s designed to be a command line utility executed directly from ruby. This is its usage description:

ruby -run -e cp -- [OPTION] SOURCE DEST
ruby -run -e ln -- [OPTION] TARGET LINK_NAME
ruby -run -e mv -- [OPTION] SOURCE DEST
ruby -run -e rm -- [OPTION] FILE
ruby -run -e mkdir -- [OPTION] DIRS
ruby -run -e rmdir -- [OPTION] DIRS
ruby -run -e install -- [OPTION] SOURCE DEST
ruby -run -e chmod -- [OPTION] OCTAL-MODE FILE
ruby -run -e touch -- [OPTION] FILE
ruby -run -e wait_writable -- [OPTION] FILE
ruby -run -e mkmf -- [OPTION] EXTNAME [OPTION]
ruby -run -e httpd -- [OPTION] [DocumentRoot]
ruby -run -e colorize -- [FILE]
ruby -run -e help [COMMAND]

Most of the commands have pretty limited utility. They just seem to be portable UNIX utilities for use when Ruby is present but a UNIX environment is not. In fact, the description of the package is “Utilities to replace common UNIX commands in Makefiles etc.”. Perhaps they’re useful in embedded systems (it’s my understanding that Ruby is commonly used for embedded systems in Japan).

The two that stand out to me are httpd and colorize. httpd is very useful—it’s become my go-to utility when I need to quickly serve files over HTTP. colorize prints out the Ruby code of any file you give it with syntax highlighting. I’ve not used it in a practical setting yet. But it seems it could be useful when looking through Ruby files in a terminal as an alternative to cat.