The English Ruby documentation is automatically generated and updated through a pipeline involving GitHub Actions, AWS S3, and systemd services. Here's how it all comes together:
-
Documentation Generation and Upload
- A scheduled GitHub Action generates the documentation for all actively maintained Ruby versions plus the master branch. Each documentation set is generated using the version of RDoc bundled with that specific Ruby version.
- Example: For Ruby 3.3, the documentation is generated with RDoc 6.6.3.1.
- The generated docs are uploaded as
ruby-docs-en-<version>.tar.xzto theftp.r-l.o/pub/ruby/doc/S3 bucket.- You can find these uploads at cache.ruby-lang.org/pub/ruby/doc/, which is powered by cache.r-l.o.
- A scheduled GitHub Action generates the documentation for all actively maintained Ruby versions plus the master branch. Each documentation set is generated using the version of RDoc bundled with that specific Ruby version.
-
Website Update
- On the server running this application, the
update-docs-en.timersystemd timer triggers therdoc-static-allservice at scheduled intervals.- Timer definition: update-docs-en.timer
- Service definition: rdoc-static-all.service
- The
rdoc-static-allservice runs the rdoc-static-all script.- This script downloads the latest documentation from S3 and updates the website accordingly.
- On the server running this application, the
The Japanese Ruby documentation (Rurema) is automatically generated and updated through a pipeline involving GitHub repositories, systemd services, and BitClust tool. Here's how it all comes together:
-
Documentation Generation and Upload
- The Japanese documentation is generated from the rurema/doctree repository, which contains the source documents for the Rurema project.
- Pre-generated documentation databases and HTML files are maintained in the rurema/generated-documents repository.
-
Website Update
- On the server running this application, the
update-docs-ja.timersystemd timer triggers thebc-setup-allservice at scheduled intervals (daily at 20:15).- Timer definition: update-docs-ja.timer
- Service definition: bc-setup-all.service
- The
bc-setup-allservice runs the bc-setup-all script.- This script updates the local repositories (bitclust, doctree, and generated-documents) and links the pre-generated documentation databases.
- On the server running this application, the
-
Static HTML Generation
- When the
bc-setup-allscript completes, it triggers thebc-static-all.pathsystemd path unit by updating a timestamp file.- Path definition: bc-static-all.path
- The path unit triggers the
bc-static-all.service, which runs the bc-static-all script.- Service definition: bc-static-all.service
- The
bc-static-allscript:- Syncs pre-generated HTML files from the
generated-documentsrepository to the web server directory - Creates symbolic links for
latestandmasterversions - Purges the Fastly cache for updated content
- Syncs pre-generated HTML files from the
- When the