A platform for the teaching and learning of media-rich case studies
Latest commit f29c34a Nov 14, 2018
Failed to load latest commit information.
app chore: upgrade active_model_serializers Nov 14, 2018
bin chore: upgrade webpacker Apr 9, 2018
cable Use WebSockets for comments Feb 21, 2017
config feat: add proper error pages in place of the Rails ones Nov 12, 2018
db fix: only allow one deployment of a case per group Oct 30, 2018
docs docs: label the buttons on the front page Oct 15, 2018
flow-typed chore: add jest Nov 14, 2018
lib fix: update full text search index for new db structure Aug 9, 2018
log Initial Rails 5 May 11, 2016
public feat: add proper error pages in place of the Rails ones Nov 12, 2018
spec chore: upgrade factory_bot Nov 14, 2018
.babelrc chore: add jest Nov 14, 2018
.codeclimate.yml chore: exclude docs website from codeclimate checks Jun 7, 2018
.env Builds a map interface with tooltips Sep 21, 2017
.eslintignore Builds a functional modal form to present the pretest May 25, 2017
.eslintrc.json chore(pkg): upgrade eslint Oct 24, 2018
.flowconfig chore: fix flow errors Oct 24, 2018
.foreman Uses webpacker (Rails 5.1 "correct" webpack solution) + HMR! Apr 12, 2017
.gitignore chore(rspec): enable --only-failures, limit retries on small runs May 9, 2018
.hound.yml chore: configure hound Jan 4, 2018
.postcssrc.yml Upgrades to Rails 5.1 (#100) Sep 7, 2017
.prettierrc.json chore: add a prettierrc file instead of relying on editor configs May 9, 2018
.rspec Tests running Oct 20, 2016
.rubocop.yml feat: ask user to type the title as confirmation before deleting a case Nov 5, 2018
.ruby-version Upgrades to Ruby 2.5.0 (#242) Feb 5, 2018
.tern-project Use tern Feb 13, 2017
Gemfile chore: use pry Nov 6, 2018
Gemfile.lock chore: upgrade gems Nov 14, 2018
Guardfile test: upgrades test harness for faster unit tests Feb 5, 2018
LICENSE Create LICENSE Sep 30, 2016
Procfile Uses forked worker processes to increase performance under load (#142) Oct 2, 2017
Procfile.dev Upgrades to Rails 5.1 (#100) Sep 7, 2017
README.markdown chore: add skylight for performance monitoring May 7, 2018
Rakefile Initial Rails 5 May 11, 2016
Vagrantfile chore: set up imagemagick for variant generation Feb 6, 2018
app.json chore: remove some add-ons from the spec for review apps Jun 19, 2018
circle.yml test: upgrades test harness for faster unit tests Feb 5, 2018
config.ru Uses rack-canonical-host to redirect queries to msc-gala.herokuapp.com Mar 22, 2017
crowdin.yml chore: Crowdin configuration file Feb 27, 2018
log.html Fixes layout of empty enrollment box. Apr 12, 2017
package.json chore: upgrade react-map-gl Nov 14, 2018
yarn.lock chore: upgrade react-map-gl Nov 14, 2018



GitHub release badge. Github commits (since latest release) CircleCI badge. Greenkeeper badge. license View performance data on Skylight

Gala is a platform for the collaborative study of media-rich teaching cases.


We’re using Vagrant, which lets developers spin up virtual machines with all the right configuration to develop Gala. Install Vagrant (>= 1.8.7 recommended, so you can vagrant plugin install vagrant-fsnotify), and then

  1. vagrant up
  2. In one terminal window or tmux pane: vagrant ssh -c 'cd /vagrant && foreman start'.
  3. In another, vagrant fsnotify
  4. Browse to http://localhost:3000/
  5. Click “Sign in with Google” to access the developer editor account


When developing the LTI tool provider components of Gala, it is useful to be able to use https with the development server. This is how to set that up.

  1. Do this in the vagrant instance. Generate a self-signed certificate: openssl req -new -newkey rsa:2048 -sha1 -days 365 -nodes -x509 -keyout localhost.key -out localhost.crt
  2. Trust the certificate in your vagrant instance: sudo cp localhost.crt /etc/ssl/cert && sudo cp localhost.key /etc/ssl/private && sudo c_rehash
  3. Trust the certificate on your host machine using Keychain Access. Drag localhost.crt into the app, then Get Info and choose Always Trust.
  4. Start the development servers with LOCALHOST_SSL=true foreman start
  5. Browse to https://localhost:3000 (http will not work)

Cron jobs

The full-text case search is powered by a Postgres materialized view so it’s really fast. The consequence is that changes don’t appear in search results until the view is refreshed. Set a cron job or use Heroku Scheduler or the equivalent to run rake indices:refresh as frequently as makes sense.

To send a weekly report of usage data, run rake emails:send_weekly_report once per week.