Skip to content
community.recurse.com
Branch: master
Clone or download
Latest commit f839549 Mar 13, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Security: Ruby 2.4.5, Rails 5.1.6.1 Jan 8, 2019
app
bin
client Sanitize href and src attributes Feb 13, 2019
config
db
lib get rid of unneeded search:create_indexes command Oct 4, 2017
log Initial rails app May 10, 2014
public Initial rails app May 10, 2014
test
vendor/assets
.gitignore minitest-ci May 12, 2016
ACKNOWLEDGEMENTS.md
Gemfile Rails 5.1.6.2 Mar 13, 2019
Gemfile.lock Rails 5.1.6.2 Mar 13, 2019
LICENSE Add AGPL3 LICENSE file Feb 13, 2019
NOTES.md
Procfile
README.md use RAILS_LOG_TO_STDOUT in development too Oct 5, 2017
Rakefile Silence DelayedJob job query logging. Jun 11, 2014
config.ru Log client env in config.ru instead of initializer Aug 21, 2014

README.md

Community

Community is a hybrid forum and mailing list server.

CircleCI Build Status

Dependencies

  • Ruby 2.4.2
    • bundler
  • Postgres 9.5.4
  • redis
  • leiningen
  • Elasticsearch 2.4

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

Postgres:

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.4.2
$ rvm use ruby-2.4.2

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

Configuration

We use 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 a sample .env file to get you started:

PORT=5001
RACK_ENV=development
RAILS_LOG_TO_STDOUT=enabled
REDIS_URL=redis://localhost:6379

# See below for instructions on getting this id and secret
HACKER_SCHOOL_CLIENT_ID=your_client_id
HACKER_SCHOOL_CLIENT_SECRET=your_client_secret

JASMINE_CONFIG_PATH=test/javascripts/support/jasmine.yml

# If you want to import accounts from the Recurse Center
# (You won't be able to do this unless you are Recurse Center faculty)
# HACKER_SCHOOL_API_SECRET_TOKEN=hacker_school_api_secret

# If you want to develop against a local copy of the Hacker School API, add:
# HACKER_SCHOOL_SITE=http://localhost:5000

# Needed for batch mail sending in production
# MAILGUN_API_KEY=your_mailgun_api_key

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 redis-server, elasticsearch, and 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

Where is db/schema.rb?

Look at db/structure.sql instead. We use this because it supports Postgres views.

Client testing

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.

License

Copyright © 2017 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.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.