/ofxaddons.com

Web app for indexing OpenFrameworks addons

Primary LanguageRuby

ofxAddons

The central place to discover openFrameworks addons.

Running app locally

Prerequisites

  1. Ruby 2.4.4
  2. Bundler < 2.0
  3. PostgreSQL 9.x (recommend using homebrew or mac ports to install)

Setup

  1. Clone the repository:

     $ git clone https://github.com/atduskgreg/ofxaddons.com
    
  2. Change directories in to the cloned repository:

     $ cd ofxaddons.com
    
  3. Install the gems dependencies

     $ bundle install
    
  4. Set up the database.

    You have two basic options: start with an empty database, or grab a backup.

    Start with an empty database

     $ rake db:setup
    
  5. Create a dotenv file:

    WARNING: Never check in the .env file. It will screw up the production environment.

     $ touch .env
    

    Open up .env and add the following lines:

     PORT=5000
     WEB_CONCURRENCY=1
    
  6. Launch the server:

     $ bundle exec unicorn
    

    You should now be able to navigate to load the web site at http://localhost:3000

Crawling

API Keys

If you want to avoid rate limiting (hint: you do) with the Github API then you need to register a new application and get some API keys.

API keys are strictly optional. If you don't use them, the app will run fine, but you'll be subject to rate limiting. After you make a few thousand requests Github will start rejecting your requests.

Once you've got your API keys, there are several ways to set up your environment, but here's one way using Foreman.

  1. If needed, create a .env file in the repository root

     $ touch .env
    

    WARNING: Never check in the .env file. It will screw up the production environment.

  2. Add your API key and secret to the file:

     GITHUB_CLIENT_ID=xxxxxxxxxxxxxxxxxxxx
     GITHUB_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
  3. Restart Foreman

Further reading on using foreman for config vars.

Running a Crawl

Crawling and updating is run through the script runner:

$ rails r 'Importer.new.run'

The importer currently logs into the rails log for whatever env you're running (e.g. log/devlopment.log). A simple way to monitor is to tail the log file:

$ tail -f log/development.log
Caching

By default the importer uses caching in the development environment. This helps speed up development when you're working on the importer since you skip all the HTTP request overhead and just read the responses off of the local disk. You can blow away the caches with rake tmp:cache:clear. Or you can manually delete individual caches files in tmp/caches/importer.

You can force caching behaiour by passing an options hash to run:

$ rails r 'Importer.new.run(cache: false)'

If you pass cache: true, the importer will use cached responses from the github API (if available).