The data for the exercises in for all of the Exercism language tracks, along with the code to sew it all together.


Add this line to your application's Gemfile:

gem 'trackler'

And then execute:

$ bundle

Or install it yourself as:

$ gem install trackler


To access a language track, use the track id (e.g. ruby, cpp):

track = Trackler.tracks["fsharp"]
# => "F#"

Tracks have implementations of specific problems:

track.implementations.each do |implementation|
  # implementation.files, implementation.readme, etc

To get the specification of a problem, use the exercise slug:

specification = Trackler.specifications["leap"]

Specifications contain the generic, language-independent metadata:

# => "Write a program that will take a year and report if it is a leap year."
# => "Leap"

You can get all of the different language implementations for a specification:

Trackler.implementations[specification.slug].each do |implementation|
  # ...


After checking out the repo, run bin/setup to install dependencies. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install.

To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to

Adding a new language track

Language tracks are included as submodules. To add a new one, run the following command, defining the track id as an environment variable. Shown here with prolog as an example.

$ TRACK_ID=prolog; git submodule add$TRACK_ID tracks/$TRACK_ID


Bug reports and pull requests are welcome on GitHub at This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

See for details.

This is an extraction from


Owners of the gem can publish it to rubygems like this:

gem build trackler.gemspec
gem install --local trackler-$VERSION.gem
gem push trackler-$VERSION.gem


Projects that make use of this gem:


The gem is available as open source under the terms of the MIT License.