NORA (named because she "brings P-A-NORA-M-A together") is a Ruby gem that schedules meetings between coworkers and adds them to Google Calendar without any work on the part of the coworkers.
We use these meetings (we call them "NORAs") to get to know one another better, grab coffee, brainstorm new ideas... whatever tickles our fancy at the time. But you can choose to be as strict or as loose about your organization's NORAs as you like.
NOTE: This code is experimental. It works for us, but if it doesn't work for you we'd love to hear about it so we can make it better.
gem install nora
- Use Google's Developer Console
to create a new project and a new OAuth 2.0 client ID for NORA to use. Download
that file and rename it
nora_client_secret.json
. - Obtain a SendGrid username and password. (This is used for sending emails when scheduling.) If you use Heroku, you can obtain a username and password easily by adding the free SendGrid add-on and then using the username and password that are set automatically in config variables.
- Copy the
examples/nora_configuration.json
file from this repo into the folder from which you intend to run thenora
program. Edit the file to include the names and email addresses you want, your SendGrid credentials, and any other changes you like.
Once you've gone through the installation steps above, you can schedule meetings
by running this command in your shell/terminal/console from the directory that
contains your nora_configuration.json
and nora_client_secret.json
files:
nora --weeks-ahead <how many weeks ahead to schedule>
For example:
nora --weeks-ahead 2
NORA automatically keeps track of who's been scheduled together in the past via
the past_pairings.txt
file, so that the same folks don't get scheduled
together often.
To add someone for future scheduling, simply add their name and email address
to nora_configuration.json
.
To remove someone, just remove them from nora_configuration.json
.
Make sure that they're in the nora_configuration.json
file with the correct
email address.
Unfortunately this is due to a bug in how Google Calendar calculates when someone is "busy." See here for more details.
NOTE: If you consistently get errors that look like this:
/Users/jacobevelyn/.gem/ruby/2.2.0/gems/signet-0.7.2/lib/signet/oauth_2/client.rb:981:in `fetch_access_token': Authorization failed. Server message: (Signet::AuthorizationError)
{
"error": "invalid_grant",
"error_description": "Bad Request"
}
from /Users/jacobevelyn/.gem/ruby/2.2.0/gems/signet-0.7.2/lib/signet/oauth_2/client.rb:998:in `fetch_access_token!'
...
then all you need to do is delete the credentials file and re-run the program. This will create a new credentials file.
No problem! Simply create a GitHub Issue and we'll get you straightened out.
- Fork it (https://github.com/panorama-ed/nora/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Make sure your changes conform to the Rubocop style specified. We use overcommit to enforce consistent code.
The gem is available as open source under the terms of the MIT License.