Community is a hybrid forum and mailing list server.
- Elasticsearch 2.4
- Java 8 (newer versions don't work)
Also, note that because Community is tied to the Recurse Center API, you'll need to be a Recurser to run this.
Installing dependencies on macOS
We recommend Postgres.app.
Ruby (using rvm):
# if you don't already have rvm, follow the instructions at https://rvm.io $ rvm get stable $ rvm install ruby-2.6.3 $ rvm use ruby-2.6.3
Java and jEnv
- Download and install JDK 8
- Install and configure jEnv (a Java version switcher):
$ brew install jenv $ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
Remember to open a new shell after installing jEnv.
Leiningen and redis (using Homebrew):
# if you don't already have homebrew, follow the instructions at https://brew.sh $ brew update $ brew install leiningen redis elasticsearch # if you'd rather not start redis-server and elasticsearch every time before hacking # on community, follow the printed instructions to have redis and elasticsearch # start automatically on boot
elasticsearch may fail to build if Java 1.7+ is not installed---if you run into this, you can just run:
# If you don't already have caskroom: $ brew install caskroom/cask/brew-cask # And then: $ brew cask install java $ brew install elasticsearch
heroku local which sets environment variables from a
.env file. We don't
check this into version control because it contains secret information. Here is
.env file to get you started:
To generate a Recurse Center client id and secret, go to your Recurse Center settings page and make a new OAuth app. The redirect url should be
http://localhost:5001/login/complete (or your development host name if you don't develop off of localhost).
Running the code
Before doing anything, make sure that
postgres are running.
The first time you run the code, install necessary gems and set up your database.
$ gem install bundler $ bundle $ bin/rake db:setup
After that, start your development server and start building the client JS.
$ heroku local # In another terminal: $ cd client $ lein cljsbuild auto
Lein can take as long as ~30 seconds to build all the Clojurescript, so be patient! The site won't work until it's done. Once it's finished, simply visit localhost:5001.
Running the production ClojureScript
The production client code will sometimes function differently than the development code. This can happen when you forget to add externs for a library you are calling, or if
lein cljsbuild auto randomly makes a bad client. Because of this, we should test the production client before deploying. To do that, you can set
CLIENT_ENV to production and run
heroku local. If you don't set CLIENT_ENV, it defaults to the Rails environment.
$ CLIENT_ENV=production heroku local
db/structure.sql instead. We use this because it supports Postgres views.
We use a small ClojureScript wrapper over Jasmine for testing our client. If you're running
lein cljsbuild auto (as above), the client tests will be built automatically.
To run the client tests:
$ bin/rake jasmine # Navigate to localhost:8888 to run the tests. # Refresh the page to re-run the tests.
Copyright © 2019 the Recurse Center
This software is licensed under the terms of the AGPL, Version 3. The complete license can be found at http://www.gnu.org/licenses/agpl-3.0.html.