There is something called all-ruby that is useful for comparing the behavior of all versions of ruby. It is said that the image can now be pulled not only from docker hub but also from ghcr.io.
Previously, the docker hub rubylang/all-ruby
was used as the docker image, and it was used as follows. (The content of the execution example is a library that does not require require
.)
$ docker run -it --rm rubylang/all-ruby env ALL_RUBY_SINCE=ruby-2.0 ./all-ruby -e 'p $".reject{|s|s.include?("/")}'
ruby-2.0.0-p0 ["enumerator.so"]
...
ruby-2.0.0-p648 ["enumerator.so"]
ruby-2.1.0-preview1 ["enumerator.so", "thread.rb"]
...
ruby-2.1.10 ["enumerator.so", "thread.rb"]
ruby-2.2.0-preview1 ["enumerator.so", "rational.so", "complex.so", "thread.rb"]
...
ruby-2.2.10 ["enumerator.so", "rational.so", "complex.so", "thread.rb"]
ruby-2.3.0-preview1 ["enumerator.so", "thread.rb", "rational.so", "complex.so"]
...
ruby-2.7.0-preview2 ["enumerator.so", "thread.rb", "rational.so", "complex.so"]
ruby-2.7.0-preview3 ["enumerator.so", "thread.rb", "rational.so", "complex.so", "ruby2_keywords.rb"]
...
ruby-3.0.0-preview1 ["enumerator.so", "thread.rb", "rational.so", "complex.so", "ruby2_keywords.rb"]
From this year, due to the stricter restrictions on docker hub, GitHub Container Registry (ghcr.io) will also be docker push
, and ghcr.io/ruby/all-ruby You can now use it.
The above execution example was docker pull
before the release of 3.0.0-preview1, so it is up to preview1, but the following execution example is the output when it is executed for the first time with 3.0.0-preview2 or later. is.
$ docker run -it --rm ghcr.io/ruby/all-ruby env ALL_RUBY_SINCE=ruby-2.0 ./all-ruby -e 'p $".reject{|s|s.include?("/")}'
Unable to find image 'ghcr.io/ruby/all-ruby:latest' locally
latest: Pulling from ruby/all-ruby
852e50cd189d: Pull complete
3d2287ec382d: Pull complete
8532674f7cc9: Pull complete
c2b6a97405ca: Pull complete
Digest: sha256:8c48ad2185525c7a8b5c19fe31f286971b64b7dd41a06be7bee0bd6ba8646943
Status: Downloaded newer image for ghcr.io/ruby/all-ruby:latest
ruby-2.0.0-p0 ["enumerator.so"]
...
ruby-2.0.0-p648 ["enumerator.so"]
ruby-2.1.0-preview1 ["enumerator.so", "thread.rb"]
...
ruby-2.1.10 ["enumerator.so", "thread.rb"]
ruby-2.2.0-preview1 ["enumerator.so", "rational.so", "complex.so", "thread.rb"]
...
ruby-2.2.10 ["enumerator.so", "rational.so", "complex.so", "thread.rb"]
ruby-2.3.0-preview1 ["enumerator.so", "thread.rb", "rational.so", "complex.so"]
...
ruby-2.7.0-preview2 ["enumerator.so", "thread.rb", "rational.so", "complex.so"]
ruby-2.7.0-preview3 ["enumerator.so", "thread.rb", "rational.so", "complex.so", "ruby2_keywords.rb"]
...
ruby-3.0.0-preview2 ["enumerator.so", "thread.rb", "rational.so", "complex.so", "ruby2_keywords.rb"]
Docker hub has also tightened the restrictions on docker pull
, so it's useful to know that you can now also docker pull
from ghcr.io
.
As an aside, it seems that https://hub.docker.com/r/rubylang/ruby will also be available at ghcr.io/ruby/ruby
. Please wait for the official announcement to actually use this.
The same article is reprinted for Personal Blog.