Skip to content

Polyglot support for Coursemology's Programming Questions

Notifications You must be signed in to change notification settings

Coursemology/polyglot

Repository files navigation

Coursemology Polyglot Build Status

Code Climate Coverage Status Security Inline docs Gem Version

This is the library common between the web application and the evaluator for determining the programming languages supported in Coursemology.

Usage

With Rails

The library works with Railties, so there is no special configuration.

The gem provides a JavaScript asset which can be used to require all Ace modes that are needed by all concrete languages. In your application manifest, include this:

//= require coursemology/polyglot/ace-modes

Ensure that Ace is found within the ace directory (i.e. ace/mode-python.js etc.)

Without Rails

In your Gemfile:

gem 'coursemology-polyglot'

Then, in your application:

Coursemology::Polyglot.eager_load!

The Polyglot library needs to be eager loaded so that it knows which languages are defined. Otherwise, the list of concrete_languages will be empty.

Version 0.3 upgrade

Breaking changes

Before version 0.3, Coursemology polyglot only supported Java 8, using docker image coursemology/evaluator-image-java:latest.

Version 0.3 adds support for Java 11.

To ensure old questions using Java continue to evaluate correctly, you need to run a migration to change Java's record in polyglot_languages table in your database.

The SQL command below summarizes the necessary changes, to be run right before upgrading to version 3.0:

UPDATE polyglot_languages SET type = 'Coursemology::Polyglot::Language::Java::Java8', name = 'Java 8'  where type = 'Coursemology::Polyglot::Language::Java';

Updating the gem

You will need the login credentials for coursemology to push the updated gem to rubygems.

gem build coursemology-polyglot
gem push coursemology-polyglot-<version>.gem
rm coursemology-polyglot-*.gem