Looking for your help!
For RGSoC we are building an app that aggregates daily status updates, commit activity and other sources into an activity stream.
Main goals are:
Features:
We're really excited at how much this app has grown and developed, and are really grateful for all of the community help along the way. There's still plenty to do here - and we'd love to have your contributions! Hop on over to the issues and have a look π.
Requirements:
In order to contribute, you need to run the Teams App locally on your computer. For setting it up, you'll need to have some tools installed on your system:
The following section will guide you step by step through the setup and installation process on Linux π§ and macOS π
# Install required packages
sudo apt-get install postgresql libpq-dev libcurl3 libcurl3-gnutls libcurl4-openssl-dev postgresql-contrib-9.5 chromium-chromedriver
# Install bundler
gem install bundler
# Create database user rgsoc with password rgsoc
sudo -u postgres createuser -P -s rgsoc
# Enter password for new role: rgsoc
# Enter it again: rgsoc
# Install required packages
brew install ruby postgres
# Make sure to follow the instructions printed on the screen for postgres
# Install chromedriver
brew tap caskroom/cask
brew cask install chromedriver
# Install bundler
gem install bundler
# Update postgres then start postgres to avoid any conflicts while creating the pg user
brew postgresql-upgrade-database
# Start postgres
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
# Create database user rgsoc with password rgsoc
createuser -P -s rgsoc
# Enter password for new role: rgsoc
# Enter it again: rgsoc
π Ran into problems so far with the setup? Check our Troubleshooting Guide.
Once you have you system ready, we need to setup the database and the Rails app. The steps are the same for π§ and π.
Copy config/database.yml.example
file to config/database.yml
:
cp config/database.yml.example config/database.yml
Then modify the new database.yml
file to your needs. Add username and password in the development and test sections:
development:
adapter: postgresql
database: rgsocteams_development
host: localhost
username: rgsoc
password: rgsoc
test:
adapter: postgresql
database: rgsocteams_test
host: localhost
username: rgsoc
password: rgsoc
Then back in the root directory of the project, install all project dependencies with bundler:
bundle install
Once this is done, setup the database and fill it with some initial data:
bundle exec rails db:setup
π Want more? Check the Optional Setup section for setting up some additional tooling π
Start the Rails server:
bundle exec rails server
The project will run at http://localhost:3000
π All set? Check the Quick Start section for the first steps in the project π
Some tips for your first interactions with the Teams App. For this, make sure you have the server running and the app open in your browser π₯.
http://localhost:3000
To access all functionality of the app, add yourself as an organizer. For this, first start an interactive Rails console in a separate terminal (window/tab) π:
bundle exec rails console
In the console π
user = User.last
user.roles.create(name: 'organizer')
# alternative: find your user, e.g. by your Github handle
user = User.find_by(github_handle: <your-github-handle-here>)
# You can assign yourself other roles the same way.
# If you've assigned yourself student AND organizer roles however,
# this may lead to undesired behavior of the app. Best remove the
# student role again.
Once you're an organizer
, you can:
π you are good to go now. Happy coding!
To avoid accidentally exceeding the rate limit on Google's Places API (e.g. when heavily testing city-autocomplete fields) and thus blocking its usage for other RGSoC sites and devs:
Get your own API key, and set the GOOGLE_MAPS_API_KEY
environment variable (or simply override the key in config/initializers/google_maps.rb
):
export GOOGLE_MAPS_API_KEY=<your-api-key>
Please write relevant tests as you code, and test locally before opening a pull request. Thank you!
bundle exec rake spec
You can optionally create a test-coverage report in coverage/*
like so:
COVERAGE=yes bundle exec rake spec
Feature tests run in headless Chrome. For local debugging, you can run them in a normal window by tagging the examples with driver: :selenium_chrome
, like so:
it 'is an interesting example', driver: :selenium_chrome do
visit some_path
# you can e.g. interrupt here
binding.pry
# now you can switch to Chrome and inspect things there
# etc.
end
You can run automatic code analyzers to check if your code complies to the project's guidelines and general best practice.
For Ruby code:
bundle exec rubocop
For JS code: (you need to install jshint
first)
jshint app/assets/javascript
The staging app lives at http://rgsoc-teams-staging.herokuapp.com. The production app is at http://teams.railsgirlssummerofcode.org.
[remote "staging"]
url = git@heroku.com:rgsoc-teams-staging.git
fetch = +refs/heads/*:refs/remotes/staging/*
[remote "production"]
url = git@heroku.com:rgsoc-teams-production.git
fetch = +refs/heads/*:refs/remotes/production/*
Append -r staging
or -r production
to any heroku
command in order to specify the app.
The Heroku scheduler is set to run these tasks:
rake activity:update
every 10 minBoth apps on Heroku use camo to proxy insecure images in activity logs. For this to work, the CAMO_HOST
and CAMO_KEY
environment variables need to be set in Heroku's configuration for the app.