Simple Rails app used to consolidate timesheet reports for shared projects across multiple Harvest accounts.
$ bundle install
Create local database harvester_development
$ rails db:migrate
Rename config/application.yml.example
to config/application.yml
and fill in Harvest account info.
# Follow the naming convention: "harvest_<namewithoutspaces>_<config_var>"
harvest_mycompany_subdomain: myharvestsubdomain
harvest_mycompany_username:
harvest_mycompany_password:
harvest_mycompany_project_id: '<grab id from project url>'
harvest_partner_subdomain: mypartnersharvestsubdomain
harvest_partner_username:
harvest_partner_password:
harvest_partner_project_id: '<grab id from partner project url>'
harvest_anotherpartner_subdomain: ...
Note: Try restarting Spring if changes aren't taking effect: $ spring stop
Seed your Organizations and Admin users:
$ rails db:seed
Run Redis and Sidekiq in seperate terminals:
$ redis-server
$ bundle exec sidekiq -q default -q mailers
Sync the Harvest data:
$ rails sync:all # This will create a job in Sidekiq but should be picked up right away
Open your app: http://harvester.dev
You must first install the addons:
- Redis add-on
- Postgress add-on (This might be installed automaically)
$ heroku create
$ heroku ps:scale web=1
# Import config vars from yml
$ figaro heroku:set -e production
# Verify config vars are set (Harvest accounts, REDIS_URL, DATABASE_URL)
$ heroku config
$ git push heroku master
$ heroku run rake db:migrate
$ heroku run rake db:seed
$ heroku run rake sync:all
$ heroku open
# Install and launch the addon
$ heroku addons:create scheduler:standard
$ heroku addons:open scheduler
Then just create a new job and add the command rake sync:all
- Build config CRUD
- Fuzzy task name matching between organizations (currently has to be exact)
- Polling for new timesheet entries only (currently nukes everything)
- Caching report calculations