Bridge Troll is a Rails app that helps RailsBridge workshop organizers plan their events.
Bridge Troll aims to provide a single site for Students and Volunteers to register for workshops, so that Organizers have as much information as possible in one place to help them plan their workshop. Organizers will be able to easily contact attendees before a workshop, sort students and volunteers into classes on the workshop day, and provide follow-up surveys afterward.
Prospective organizers and attendees can sign up right now at www.bridgetroll.org. If you would really like roll your own, Bridge Troll is open source and you are free to fork, hack to your heart's content and deploy it to your favorite server or PaaS.
We have something of a roadmap here.
New? Keep reading this, and then head to the wiki to read the contributor guidelines.
- The real live production application lives at bridgetroll.herokuapp.com or www.bridgetroll.org
- The staging server lives at bridgetroll-staging.herokuapp.com
- The continuous integration server is at travis-ci.org/railsbridge/bridge_troll
- New features are in our Pivotal Tracker project.
- Bugs are in GitHub Issues.
Join the google group and send a quick note introducing yourself.
Then, have a look at our feature backlog. Pick a feature to work on, fork the project, code some code, and send a really good pull request. Not sure what to do? Ask the google group for advice!
You'll need a version manager for Ruby. A version manager is a command-line tool which allows you to easily install, manage, and work with multiple ruby environments. We recommend rvm, but rbenv will work.
We're using a fork & pull model (see Fork A Repo for an example), so fork this repo then clone the forked repo. (Note: change username below to be your repo.)
git clone https://github.com/username/bridge_troll.git
cd bridge_troll
Make sure you have the correct version of ruby before installing the gems for this repo. If you are using rvm, run: rvm install 2.1.2
. For rbenv, run: rbenv install 2.1.2
.
Finish setting up your environment (Note: This has nothing to do with Twitter Bootstrap)
script/bootstrap
To verify your environment is set up correctly, run the server
rails s
Go to http://localhost:3000/ and verify your success! You can play with the app locally to become more familiar with it. (Pro-tip: to create a valid user without setting up email, run User.last.confirm! in the Rails console after signing up.)
This project has many tests that you should run before submitting a pull request, even if it's just a simple text change. You will need to install PhantomJS to run the tests. On OSX with Homebrew, try
brew update
brew install phantomjs
Then you can run tests by doing
script/test
Seed data refers to the initial data provided with the site for training, testing, or as template for the data that you enter.
rake db:seed
will create a sample event (called 'Seeded Test Event'), organized by a sample user, with many more sample user volunteers and students.
All the created users have easyish-to-remember logins, so a great way to test out organizer functionality is to load the seeds and log in as organizer@example.com
with the password password
.
Doing rake db:seed
again will destroy all those sample persons and create the event again. The exact details of what is created can be found in seed_event.rb
.
We have created a living style guide to keep track of HTML components and their styling across the site. See it at http://localhost:3000/style_guide.
We're still working on adding every element to the page, so if you see missing components, add it to the erb template (static_pages/style_guide.html.erb)
##Additional Services
The following setup is only required if you are developing for these specific features.
You don't have to set up email locally in order to develop. Note that the text of the email will appear in the log (which appears in your terminal, after you type rails s
).
To receive/develop emails locally, install the MailCatcher gem at http://mailcatcher.me. The process is as follows:
gem install mailcatcher
-- installs MailCatcher in your current gemsetmailcatcher
-- start the MailCatcher server if it isn't running already- Visit http://localhost:1080/ in your web browser. This is your MailCatcher mailbox, where mails will appear.
- Do something in your local Bridge Troll app that would send a mail, like signing up for a new account.
- You should see the mail that Rails sent in the MailCatcher window. Woo!
Note that MailCatcher just makes it easy to see the HTML output of your mails: it doesn't guarantee that the way the mail looks like in MailCatcher is how it will look in Gmail or Outlook. Beware!
If you are just getting started, skip these steps for now.
When developing the parts of Bridge Troll that communicate with external services such as meetup and authentication, you will need to use API keys, which are most easily managed with environment variables. Environment variables control various aspects of how your code runs.
To set up environment variables for the Rails server, you'll need to create an .env
file in the Bridge Troll directory. Here's a sample one (note these are not real API keys):
MEETUP_API_KEY=12345
MEETUP_OAUTH_KEY=90210
MEETUP_OAUTH_SECRET=5551212
RAILS_ENV=development
RACK_ENV=development
PORT=3000
With the .env
file in place, the environment variables will be set every time you start the server with rails s
.
Bridge Troll uses Omniauth to allow external authentication to a number of services.
- Twitter through omniauth-twitter - set up a consumer here
- Facebook through omniauth-facebook - set up a consumer here
- GitHub through omniauth-github - set up a consumer here
- Meetup through omniauth-meetup - set up a consumer here
To set up external authentication, create an oauth consumer on the site you want to authenticate with, then add [PROVIDER]_OAUTH_KEY and [PROVIDER]_OAUTH_SECRET value to the app environment.
When developing locally, it is often helpful to set up local.bridgetroll.org to point at your localhost server via your hosts file. You can then tell the OAuth provider to use the url local.bridgetroll.org. Often, a separate OAuth consumer needs to be set up for each environment (localhost/staging/production), but some providers (like Facebook) allow a consumer set up as "www.bridgetroll.org" to function for any subdomain (like "local.bridgetroll.org").
To test authenticating with Meetup using your localhost server, you need to register a new OAuth Consumer at Meetup.
When you add a new OAuth consumer, set the Website as http://www.bridgetroll.org
, the Redirect URI as http://localhost:3000/users/auth/meetup/callback
.
The values for key and secret on the OAuth consumers page should be added to your local environment as MEETUP_OAUTH_KEY and MEETUP_OAUTH_SECRET, respectively.
This section is only necessary if you want to import Meetup data. The app will still work, and the tests will all pass, without setting any Meetup API keys.
To import historical data from Meetup, use the rake task rake meetup:import
. This requires you set up a MEETUP_API_KEY in your local environment, which you can find on Meetup at http://www.meetup.com/meetup_api/key/.
One billion thanks to our super awesome contributors.