168 lines
4.4 KiB
Markdown
168 lines
4.4 KiB
Markdown
### Setup
|
||
|
||
|
||
|
||
Install RVM to manage ruby version:
|
||
```bash
|
||
\curl -sSL https://get.rvm.io | bash
|
||
rvm install 2.6.3
|
||
```
|
||
|
||
Install external dependencies:
|
||
|
||
#### For MacOS:
|
||
```bash
|
||
brew tap heroku/brew && brew install heroku
|
||
brew install postgres
|
||
brew install redis
|
||
brew install ffmpeg
|
||
brew install yarn
|
||
```
|
||
|
||
#### For Linux (Ubuntu):
|
||
```bash
|
||
curl https://cli-assets.heroku.com/install.sh | sh
|
||
sudo apt-get install postgresql postgresql-contrib
|
||
sudo apt-get install redis-server
|
||
sudo add-apt-repository ppa:mc3man/trusty-media
|
||
sudo apt-get install ffmpeg
|
||
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
||
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
|
||
sudo apt-get update
|
||
sudo apt-get install yarn
|
||
```
|
||
|
||
Then run:
|
||
```bash
|
||
bin/setup
|
||
```
|
||
to create your databases
|
||
|
||
You will need to:
|
||
- Get environment variables from fellow teammates to populate into `.env` (See env.sample for examples)
|
||
- AWS account to have access to S3 buckets
|
||
- Heroku account to deploy
|
||
- Set DOMAIN and WEB_PORT variables - otherwise application won't work properly. Use DOMAIN=localhost and WEB_PORT=3000 for the default values
|
||
- Set ZOOM_API_KEY and ZOOM_API_SECRET to integrate with Zoom.us for automatic meeting creation.
|
||
|
||
After filling up the .env with correct values
|
||
Run setup again:
|
||
```bash
|
||
bin/setup
|
||
```
|
||
|
||
|
||
### Running tests
|
||
```bash
|
||
rspec
|
||
yarn test
|
||
```
|
||
|
||
### Running Data migrations
|
||
```bash
|
||
rails data:migrate
|
||
```
|
||
|
||
### Current deployment pipeline on Heroku
|
||
- Review -> Staging |-> Production
|
||
|-> Demo
|
||
|
||
#### Working with environments using Parity
|
||
|
||
[Parity](https://github.com/thoughtbot/parity) provides Heroku command wrappers for each environment under the `bin` folder.
|
||
|
||
### Useful Heroku commands
|
||
##### Manually Deploying to Review
|
||
|
||
The Review environment is auto-deployed from GitHub `master`. But if you need to manually deploy:
|
||
```bash
|
||
bin/review deploy
|
||
```
|
||
|
||
##### Running migrations manually (should be done automatically by Heroku via Procfile)
|
||
```bash
|
||
bin/review run db:migrate
|
||
```
|
||
|
||
##### Rails console into Review environment
|
||
```bash
|
||
bin/review console
|
||
```
|
||
|
||
##### We keep locale files sorted in alphabetical order. This can be done programmatically
|
||
```
|
||
rake i18n:sort
|
||
```
|
||
|
||
## Zoom.us integration
|
||
DirectMe app offers live broadcasting. Users are offered to paralelly connect to the Zoom meeting to have a video conference while the streaming happens. In order to use the Zoom functionality, the app needs to have the API keys provided. You need Zoom PRO account for this feature.
|
||
|
||
#### Zoom.us api keys
|
||
1. Log in to you zoom.us account
|
||
2. Go to https://marketplace.zoom.us/develop/create
|
||
3. Choose JWT application
|
||
4. Copy API Key and API Secret
|
||
|
||
|
||
## Working Locally
|
||
|
||
#### Polling for analysis status updates
|
||
|
||
When videos are uploaded, a video/audio analysis process is initiated. Typically the analysis process sends an SNS notification when it is completed. Those SNS notifications hit a webhook URL within the app to update the status accordingly. This requires a public URL, which you likely won't have in development.
|
||
|
||
As an alternative, we can poll for status updates using the following Rake task.
|
||
```bash
|
||
rake dev:poll_for_analysis_updates
|
||
```
|
||
|
||
To run this continuously, there is a [Clockwork](https://github.com/adamwiggins/clockwork) scheduler included.
|
||
```bash
|
||
bin/clockwork lib/dev_clockwork.rb
|
||
```
|
||
|
||
#### Running a real async background queue locally
|
||
1. Verify redis has been installed
|
||
1. Set REDIS_URL in your `.env` file
|
||
```bash
|
||
REDIS_URL=redis://127.0.0.1:6379
|
||
```
|
||
1. Start Sidekiq
|
||
```bash
|
||
bundle exec sidekiq -q default -q mailers -c 5
|
||
```
|
||
|
||
### Setup pairing script
|
||
[Check out the repo here](https://github.com/pivotal-legacy/git_scripts)
|
||
- Tool to add two or more authors on a commit message quickly
|
||
- Make sure to add yourself or new devs to the `.pairs` file in the repo
|
||
|
||
`cd /usr/local/bin && curl -L http://github.com/pivotal/git_scripts/tarball/master | gunzip | tar xvf - --strip=2`
|
||
|
||
then `git pair XX` where XX are your initials from the pairs file
|
||
|
||
Enjoy!
|
||
|
||
## Problems with setting up environment
|
||
|
||
|
||
### Database setup
|
||
|
||
If the setup fails in the point after at least one of the databases
|
||
have been set up.
|
||
1. Drop the databases
|
||
```bash
|
||
rails db:drop
|
||
```
|
||
1. Run the setup again.
|
||
|
||
## Optional helpers
|
||
|
||
# Run rubocop fix script as a pre-commit git hook
|
||
|
||
Add following as .git/hooks/pre-commit file
|
||
|
||
```
|
||
#!/bin/sh
|
||
exec ./bin/rubocopfix.sh
|
||
```
|