GLI is relatively stable. As such:
- No major new features should be added
- No refactorings or "modernization" is desired
- No runtime dependencies should be added.
If you really want to make a change like this, open an issue first to discuss.
That said, I welcome:
- Bugfixes
- Doc changes
- Minor improvements
I am responsive on issues, so reach out there if you have a question.
GLI us using a Docker-based development system to ensure consistency. To use it, you will need to have Docker installed, as well as Bash. This should all work under Windows Subsystem for Linux.
-
Install Docker
-
dx/build
This will use
Dockerfile.dx
to create one Docker image for each supported Ruby version (seedx/docker-compose.env
'sRUBY_VERSIONS
variable for the current list). This will also generatedocker-compose.dx.yml
which will run all versions of Ruby for GLI at the same time. -
dx/start
This will start Docker using
docker-compose.dx.yml
, which will run containers for all the images generated bydx/build
-
From here, you can run commands inside the running containers, or you can run
bash
inside a container to effectively "log in" and run commands.
Once you are set up, you should run dx/exec bash
. This will log you into the container running the oldest supported version of
Ruby. This is the version where you should do your basic work. This container has access to the source code you cloned from
GitHub.
on-your-computer> dx/exec bash
inside-docker-container> bin/setup # installs all gems
inside-docker-container> bin/rake # runs all tests
Once you have stuff working, run tests on the other versions. Since the container you were working in was operating on your checked-out files, the other containers will have access as well.
on-your-computer> dx/exec -v 3.3 bash # connects to the conatiner where Ruby 3.3 is installed
inside-docker-container> bin/setup # installs all gems
inside-docker-container> bin/rake # runs all tests
You can also try using bin/ci
on your computer (not inside a Docker container), which will run tests across the entire build
matrix.
In theory, GLI can be worked on using RVM, RBEnv, asdf, or whatever other way you want to manage Ruby. You can create a
.ruby-version
or .tool-versions
. These are ignored so you can keep them on your machine. I don't support this setup, so if
something is wrong, I probably can't help. This is why I have it set up with Docker.